Object的equals方法
来源:互联网 发布:淘宝全球购申请入口 编辑:程序博客网 时间:2024/06/05 09:08
java.lang.Object
java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。
Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。
Object类是Java中唯一没有父类的类。
其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
相等测试与自检性
hashcode
toString
public class Employee { private String name; private double salary; private Date hireDay; public Employee(String n, double s, int year, int month, int day ){ name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireDay = calendar.getTime(); } public String getName() { return name; } public double getSalary() { return salary; } public Date getHireDay() { return hireDay; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } @Override public boolean equals(Object otherObj) { if(otherObj == null) return false; if(this == otherObj) return true; if(getClass()!=otherObj.getClass()) return false; Employee other = (Employee) otherObj; return Objects.equals(name, other.name) && salary == other.salary && Objects.equals(hireDay, other.hireDay); } @Override public int hashCode() { return Objects.hash(name, salary, hireDay); } @Override public String toString() { // TODO Auto-generated method stub return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay + "]"; }}public class Manager extends Employee{ private double bonus; public Manager(String n, double s, int year, int month, int day) { super(n, s, year, month, day); } public double getSalary() { double baseSalary = super.getSalary(); return baseSalary + bonus; } public void setBonus(double b) { bonus = b; } @Override public boolean equals(Object otherObj) { if(!super.equals(otherObj))return false; Manager other = (Manager) otherObj; return bonus == other.bonus; } @Override public int hashCode() { // TODO Auto-generated method stub return super.hashCode() + 17 * new Double(bonus).hashCode(); } @Override public String toString() { // TODO Auto-generated method stub return super.toString() + "[bonus=" + bonus + "]"; }}public class Test { public static void main(String[] args) { int i = Objects.hashCode(new Date());//1405888641 int ii = Objects.hash(new Date());//1405888672 Employee e1 = new Employee("周杰伦", 75000, 1987, 12, 15); Employee e2 = new Employee("周杰伦", 75000, 1987, 12, 15); Employee e3 = new Employee("张学友", 50000, 1989, 10, 1); System.out.println(e1.equals(e2)); //true System.out.println(e2.equals(e1)); //true System.out.println(e1.equals(e3)); //false Manager m1 = new Manager("周杰伦", 75000, 1987, 12, 15); Manager m2 = new Manager("李沁", 50000, 1999, 10, 1); System.out.println(m1.equals(e1)); //false System.out.println(m1.equals(m2)); //true Employee ee1 = new Manager("周杰伦", 75000, 1987, 12, 15) ; System.out.println(ee1.equals(e1)); //fasle System.out.println(ee1.equals(m1)); //true Manager m3 = (Manager) ee1; System.out.println(m3.equals(e1)); //false System.out.println(m3.equals(m1)); //true m3.setBonus(2000); System.out.println(m3.equals(m1)); //false }}
阅读全文
0 0
- Object的equals方法
- object的equals方法
- Object的equals方法
- Object的hashCode方法和equals方法
- Object的equals方法和toString方法
- java 的Object的equals方法
- java Object 的equals方法的复写
- 如何重写Object的Equals方法?
- Object 的俩个方法:equals() hashcode()
- Object对象的通用方法-equals、hashCode
- 解读Object类的equals方法
- java基础:Object的equals方法
- Java中Object类的equals方法
- java超类Object的equals()方法
- 详解Object类的equals方法
- Object的equals和hashCode方法
- java基础:Object的equals方法
- Object类的toString()和equals()方法
- 数据结构第十一周项目一_
- java——JVM原理
- CSS3实现动态翻牌效果 仿百度贴吧3D翻牌一次动画特效
- 数据结构课程总结
- 嵌入式 hi3518平台uboot引导nfs文件系统
- Object的equals方法
- vue.js
- 24点算法详解--Java代码实现
- 《数字技术》连载31:第4章 信息传输的控制和选择 第4节 多路选择器
- 九次方华东区总经理姚乐生:大数据建设要结合地方产业
- Eclipse 卡死在 Android SDK Content Loader
- 普元信息政务大数据咨询顾问夏佳斌:数据资源体系的核心——资源定义、运营机制和支撑平台
- 专访泰康大数据部总经理周雄志:“经验驱动”成为过去式,“数据驱动”基本实现
- java实现定时任务的三种常用方法