为什么重写equals方法还要重写hashCode方法
因为java有个规则,如果一个两个对象equals结果是true,那么它们的hashCode值也应该相同,如果只重写了equals方法,那么hashCode值还是默认的,也就是我们常说的地址值,还是不相等。
可以看一下Object类的equals方法和hashCode方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
public native int hashCode();