只重写equals但不重写hashcode方法会造成两个对象值相等,但是hashcode不同的原因
为什么不重写hashcode方法会造成两个对象值相等,但是hashcode不同的原因
在没有重写的情况下,我们调用的是Object中的hashcode()方法。
下图是官方注释中的介绍。
public native int hashCode();
意思也就是说在不重写hashcode()时,返回给我们的是对象的内存地址转换为的整数,这也就导致了我们重写equals后比较两个值相同的对象得到的结果为true,但是hashcode值却不相等。