A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鲁中需 中级黑马   /  2012-10-25 10:44  /  1127 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

两个对象值相同(x.equals(y) == true),那么他们的hashCode也必须一样吗,求解。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
是的。

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

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

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

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

我们在自定义类的时候也要注意,一定要覆盖hashCode和equals方法,从而保证自定义类对象的唯一性。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
up_ 中级黑马 2012-10-25 12:19:46
藤椅
x.equals(y) == true
就这句语句而言,如果本身并没有覆写Object方法里的hashCode和equals,那么x和y的hashCode一定相同,
如果你本身根据需求定义了自己的equals方法,则通过你定义的方法进行equals。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马