黑马程序员技术交流社区

标题: hashcode问题 [打印本页]

作者: 鲁中需    时间: 2012-10-25 10:44
标题: hashcode问题
两个对象值相同(x.equals(y) == true),那么他们的hashCode也必须一样吗,求解。

作者: 赵云柯    时间: 2012-10-25 11:34
是的。

当程序调用某个对象的equals方法时,该方法内部会先判断要比较的两个实例的hashCode值。

如果hashCode值不相等,则equals方法直接返回false。

如果hashCode值相等,才会继续判断两个对象是否满足equals方法的其它条件。

因此,如果x.equals(y) == true,那么x和y的hashCode值一定相等。

我们在自定义类的时候也要注意,一定要覆盖hashCode和equals方法,从而保证自定义类对象的唯一性。
作者: up_    时间: 2012-10-25 12:19
x.equals(y) == true
就这句语句而言,如果本身并没有覆写Object方法里的hashCode和equals,那么x和y的hashCode一定相同,
如果你本身根据需求定义了自己的equals方法,则通过你定义的方法进行equals。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2