社区
Java SE
帖子详情
关于hashCode()和equals()的本质区别和联系
kingzhui005
2009-06-05 11:55:32
关于hashCode()和equals()的本质区别和联系
老师当时讲我没听多懂,
麻烦大家,
把所有跟这两个方法有关的知识都说说。、
非常感谢
...全文
168
14
打赏
收藏
关于hashCode()和equals()的本质区别和联系
关于hashCode()和equals()的本质区别和联系 老师当时讲我没听多懂, 麻烦大家, 把所有跟这两个方法有关的知识都说说。、 非常感谢
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Rangxing
2009-06-08
打赏
举报
回复
看JDK文档/...
longq121
2009-06-08
打赏
举报
回复
学习
Yedy2000
2009-06-08
打赏
举报
回复
mark
xjsglg
2009-06-08
打赏
举报
回复
1、首先equals()和hashcode()这两个方法都是从object类中继承过来的。
equals()是对两个对象的地址值进行的比较(即比较引用是否相同)。
hashCode()是一个本地方法,它的实现是根据本地机器相关的。
2、Java语言对equals()的要求如下,这些要求是必须遵循的:
• 对称性:如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true”。
• 反射性:x.equals(x)必须返回是“true”。
• 类推性:如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”。
• 一致性:如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管你重复x.equals(y)多少次,返回都是“true”。
• 任何情况下,x.equals(null),永远返回是“false”;x.equals(和x不同类型的对象)永远返回是“false”。
3、equals()相等的两个对象,hashcode()一定相等;
反过来:hashcode()不等,一定能推出equals()也不等;
hashcode()相等,equals()可能相等,也可能不等。
参考地址:http://honda418.javaeye.com/blog/342731
ZangXT
2009-06-07
打赏
举报
回复
[Quote=引用 9 楼 rommal7090 的回复:]
另外若2个对象的hashcode相等则2个对象equals
[/Quote]
晕,正好说反了。
愤怒的月光
2009-06-07
打赏
举报
回复
Effective Java
讲得比较详细
equals()方法
1. 自反
2. 对称
3. 传递
4. 一致
5. X非空,x.equals(null)返回false
为了实现高质量的equals()改写,effective java提醒我们要注意一下几点:
1. 使用==操作符检查是否指向同一个对象,这是一个性能优化的手段。
2. 使用instanceof来检查是否为某个类,同样也是性能优化的手段。
3. 把实参转换到正确的类型,上面一步保证了这一步不会有错误。
4. 检查类里的每一个关键域是否都相等。
hashCode()则是一种计算 对象的散列值
任何 classes 如果复写了 equals(), 便应该同时也复写 hashCode()
这个正解,另外若2个对象的hashcode相等则2个对象equals
ageha67
2009-06-07
打赏
举报
回复
学习。。。。
blliy117
2009-06-05
打赏
举报
回复
Effective Java
讲得比较详细
equals()方法
1. 自反
2. 对称
3. 传递
4. 一致
5. X非空,x.equals(null)返回false
为了实现高质量的equals()改写,effective java提醒我们要注意一下几点:
1. 使用==操作符检查是否指向同一个对象,这是一个性能优化的手段。
2. 使用instanceof来检查是否为某个类,同样也是性能优化的手段。
3. 把实参转换到正确的类型,上面一步保证了这一步不会有错误。
4. 检查类里的每一个关键域是否都相等。
hashCode()则是一种计算 对象的散列值
任何 classes 如果复写了 equals(), 便应该同时也复写 hashCode()
maosenmin
2009-06-05
打赏
举报
回复
给你一个网上的参考:http://zhidao.baidu.com/question/47831363.html
http://lxj8495138.javaeye.com/blog/286024
lulu0126
2009-06-05
打赏
举报
回复
在判断对象或变量是否相等上得到结果是一样的!
请大虾们指正!
lulu0126
2009-06-05
打赏
举报
回复
个人意见:
equals()反映的是对象或变量具体的值。
而hashCode()是对象或变量通过哈希算法计算出的哈希值
APOLLO_TS
2009-06-05
打赏
举报
回复
如果出现 类名@23ac3265
那个@后的值就是散列码,你可以认为那个是对象的地址value
zhulin1113
2009-06-05
打赏
举报
回复
判断2个对象指向的地址是否相同,也就是2对象是否相等用hashcode
判断2个对象的值是否相等就用equals
简单的理解。。。
hashcode就相当于"=="
oklinsong
2009-06-05
打赏
举报
回复
用来判断两个对象是否相等,若相等则两个对象的hashcode 也是一样的。
【转载】详解
hashCode
()和
equals
()的
本质区别
和
联系
详解
hashCode
()和
equals
()的
本质区别
和
联系
: https://www.jb51.net/article/124966.htm Java中的
equals
和
hashCode
方法详解: https://www.jb51.net/article/96138.htm 探索Java中的
equals
()和
hashCode
()方法:https://www.jb51.net/article/11...
hashCode
()和
equals
()的
本质区别
和
联系
每个Java对象都有
hashCode
() 和
equals
() 方法。许多类忽略(Override)这些方法的缺省实施,以在对象实例之间提供更深层次的语义可比性。在 Java理念和实践这一部分,Java开发人员Brian Goetz向您介绍在创建Java类以有效和准确定义
hashCode
() 和
equals
() 时应遵循的规则和指南。您可以在 讨论论坛与作者和其它读者一同探讨您对本文
java基础-
hashCode
()和
equals
()的
本质区别
和
联系
在学习java,根据视频做实例的过程中,对
equals
和
hashcode
两个方法理解稍微深刻一点,主要是它们两个很容易混淆,容易出错,自己又通过网上的资料学习,和大家分享
equals
()方法
equals
是Object类提供的方法之一,众所周知,每一个java类都继承自Object类, 所以说每一个对象都有
equals
这个方法。而我们在用这个方法时却一般都重写这
Java学习从菜鸟变大鸟之一
hashCode
()和
equals
()的
本质区别
和
联系
equals
()是判读两个Set是否相等[前提是
equals
()在类中被覆盖]。==决定引用值是否指向同一对象。 1、当向集合set中增加对象时,首先计算要增加对象的
hashCode
码,根据该值来得到一个位置来存放当前的对象,当在该位置没有一个对象存在的话,那么集合set认为该对象在集合中不存在,直接增加进去。如果在该位置有一个对象的话,接着将准备增加到集合中的对象与该位置上的对象进行equal
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章