一、hashCode
- hashCode:是Java的本地方法,通过对象的内存地址(不止内存地址)计算出一个整数值,少数情况下,内存地址不同,这个整数值也有可能是相同的。例:Aa和BB的hashCode值是相同的
二、equals
- equals:是Java的本地方法,默认比较的是两个对象的内存地址是否相同。
三、结论:
- 综上所述可知,Aa和BB的hashCode值是相同的,但是他们的内存地址并不相同,equals不等,即两个对象的 hashCode()相同,则 equals()也一定为 true使错误的。
四、题外话:
- hashMap 判断一个对象是否相等,首先通过比较对象的hashcode值是否相同,若是相同,再比较equals是否相同,若是不同,则可判定两个对象为不同的对象。
- 当我们重写一个对象的equals方法时,必须同时重写对象的hashCode方法,这是为了避免出现两个对象相同,但是hashCode值却不同的情况