java 覆写equals方法
Object.equals()
obj1.equals(obj2) 为真时—两个对象指向同一个内存位置
Object.hashcode()
obj1.hashcode()== obj2.hashcode()–两个对象的哈希码相等
覆写equals()
覆写一个方法的前提是方法签名必须一致,而方法签名包括参数类型,equals方法接收的对象的类型是Object
重写equals–为了比较对象的value值
例A类有a1、a2、a3三个属性
重写A类的equals()
@Override public boolean equals(Object obj) {
if(obj== null)
return false;//不能是空对象
if(!(obj instanceof A))
return false;//如果不是A类对象,肯定不相等
A a = (A)obj;//因为接收到的参数类型是Object不是A,所以需要 A a = (A)obj来进行转型,方可调用A类中定义的字段和方法来进行操作
if( a.a1 == this.a1 && a.a2== this.a2 && a.a3==this.a3 )
return true;
else
return false;
}
覆写equals()
hashcode是用于散列数据的快速存取,如利用HashSet/HashMap/Hashtable类来存储数据时,都是根据存储对象的hashcode值来进行判断是否相同的。
覆写hashcode方法是为了将数据存入HashSet/HashMap/Hashtable类时进行比较
@Override public int hashCode()
{
return this.a1.hashCode() + this.a2.hashCode() +this.a3.hashCode()
}