首先比较来hashcode,如果hashcode相同,再比较equals。
如果hashcode()比较相同,那么equals一定相同。
Object中的equals方法
pubic boolean equals(Object obj){
return (this==obj);
}
这是对两个对象的地址值比较。
当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法。
复写以后,比较的方式就发生改变。
equals()相等的两个对象,hashcode()一定相等; equals()不相等的两个对象,
却并不能证明他们的hashcode()不相等。换句话说,equals()方法不相等的两个对象,hashcode()有可能相等。
:hashcode()不等,一定能推出equals()也不等;hashcode()相等,equals()可能相等,也可能不等。 |