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    }}
原创粉丝点击