Java学习--Object类中的几个方法
2016-10-30 20:26
323 查看
Object是Java所有对象的基类,其中有几个方法,子类可以重写。
输出:
alice1 == alice2: true
alice1 == alice3: false
al
4000
ice1.equals(alice3): true
alice1.equals(bob): false
boss.toString(): equals.Manager[name=Carl cracker,salary=80000.0,hireDay=1987-12-15][bonus=5000.0]
carl.equals(boss): false
alice1.hashCode(): -808853550
alice3.hashCode(): -808853550
bob.hashCode(): -624019882
carl.hashCode(): 1949236909
package equals; public class EqualsTest { public static void main(String[] args) { Employee alice1 = new Employee("Alice Adams", 75000, 1987, 12, 15); Employee alice2 = alice1; Employee alice3 = new Employee("Alice Adams", 75000, 1987, 12, 15); Employee bob = new Employee("Bob Brandson", 50000, 1989, 10, 1); System.out.println("alice1 == alice2: " + (alice1 == alice2)); System.out.println("alice1 == alice3: " + (alice1 == alice3)); System.out.println("alice1.equals(alice3): " + alice1.equals(alice3)); System.out.println("alice1.equals(bob): " + alice1.equals(bob)); Manager carl = new Manager("Carl cracker", 80000, 1987, 12, 15); Manager boss = new Manager("Carl cracker", 80000, 1987, 12, 15); boss.setBonus(5000); System.out.println("boss.toString(): " + boss); System.out.println("carl.equals(boss): " + carl.equals(boss)); System.out.println("alice1.hashCode(): " + alice1.hashCode()); System.out.println("alice3.hashCode(): " + alice3.hashCode()); System.out.println("bob.hashCode(): " + bob.hashCode()); System.out.println("carl.hashCode(): " + carl.hashCode()); } }
package equals; import java.time.LocalDate; import java.util.Objects; public class Employee { private String name; private double salary; private LocalDate hireDay; public Employee(String name, double salary, int year, int month, int day) { this.name = name; this.salary = salary; hireDay = LocalDate.of(year, month, day); } public String getName() { return name; } public double getSalary() { return salary; } public LocalDate getHireDay() { return hireDay; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } public boolean equals(Object otherObject) { if (this == otherObject) return true; if (otherObject == null) return false; if (getClass() != otherObject.getClass()) return false; Employee other = (Employee) otherObject; return Objects.equals(name, other.name) && salary == other.salary && Objects.equals(hireDay, other.hireDay); } public int hashCode() { return Objects.hash(name, salary, hireDay); } public String toString() { return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay + "]"; } }
package equals; public class Manager extends Employee{ private double bonus; public Manager(String name, double salary, int year, int month, int day) { super(name, salary, year, month, day); // TODO Auto-generated constructor stub bonus = 0; } public double getSalary() { double baseSalary = super.getSalary(); return baseSalary + bonus; } public void setBonus(double bonus) { this.bonus = bonus; } public boolean equals(Object otherObject) { if (!super.equals(otherObject)) return false; Manager other = (Manager) otherObject; return bonus == other.bonus; } public int hashCode() { return super.hashCode() + 17 * new Double(bonus).hashCode(); } public String toString() { return super.toString() + "[bonus=" + bonus + "]"; } }
输出:
alice1 == alice2: true
alice1 == alice3: false
al
4000
ice1.equals(alice3): true
alice1.equals(bob): false
boss.toString(): equals.Manager[name=Carl cracker,salary=80000.0,hireDay=1987-12-15][bonus=5000.0]
carl.equals(boss): false
alice1.hashCode(): -808853550
alice3.hashCode(): -808853550
bob.hashCode(): -624019882
carl.hashCode(): 1949236909
相关文章推荐
- java学习笔记---Java可变参数方法重载时要注意的几个问题
- 从几个sample来学习Java堆,方法区,Java栈和本地方法栈
- java学习笔记——Object的equals方法
- java Object对象中hashCode和equals方法学习
- JAVA学习中,一个关于Object对象转换时对应方法的问题
- Java学习笔记42:线程的几个方法和概念
- Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)
- java学习之Object类常用方法
- Java学习笔记之Object类以及equals()方法
- Java--Object中的equals方法的几个要点
- 从几个sample来学习Java堆,方法区,Java栈和本地方法栈
- [原]Java程序员的JavaScript学习笔记(5——prototype和Object内置方法)
- 从几个sample来学习Java堆,方法区,Java栈和本地方法栈
- 从几个sample来学习JAVA堆、方法区、JAVA栈和本地方法栈
- 多态Object类toString方法学习笔记ObjectDemo.java
- java中Object相关的几个方法
- Java学习整理之Object的wait和notify方法
- Java程序员的JavaScript学习笔记(5——prototype和Object内置方法)
- Object类中的几个方法(京东)
- 从几个sample来学习Java堆,方法区,Java栈和本地方法栈