一.equals方法:
1.hashcode方法和equels方法都来自object,equals方法不重写的话,和==的作用是相同的。
在重写equals的时候,注意一般需要满足的特性:
①自反性:这个略掉
②非空性:即任何非空引用x.equals(null)都应该返回false。null是不确定的,null和null比较是没有意义的
③对称性:即x.equals(y)和y.equals(x)在结果上是一致的。于是这里的话根据第二个非空性,就都要求两个引用都应该是非空的
2.equals方法重写的一般步骤:
public boolean equals(Object obj) { //首先比较两个引用是不是同一个 if(obj==this){ return true; }//如果不是同一个引用,再来比较内容是不是相同 else if(obj!=null&&obj.getClass()==this.getClass()){//instanceof 运算符是用来在运行时指出对象是否是特定类/或者它的子类的一个实例, Student obj1=(Student) obj; return this.getId().equals(obj1.getId())&&this.getName().equals(obj1.getName()); }else if(obj==null||this==null){ return false; } return false; }
假设student有String name和Integer id两个属性。
3.hashcode方法概念上将是,散列数据的方法,目前理解成是便于快速高效比较两个对象是不是相等的一种方法,hashcode相等是两个对象相等的必要条件。