社区
Java SE
帖子详情
关于hashCode()和equals()的本质区别和联系
kingzhui005
2009-06-05 11:55:32
关于hashCode()和equals()的本质区别和联系
老师当时讲我没听多懂,
麻烦大家,
把所有跟这两个方法有关的知识都说说。、
非常感谢
...全文
132
14
打赏
收藏
关于hashCode()和equals()的本质区别和联系
关于hashCode()和equals()的本质区别和联系 老师当时讲我没听多懂, 麻烦大家, 把所有跟这两个方法有关的知识都说说。、 非常感谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
()的
本质区别
和
联系
在 Java 中,
hashCode
() 和
equals
() 是两个非常重要的方法,它们都是从 Object 类继承来的。了解这两个方法的
本质区别
和
联系
对于 Java 开发者来说至关重要。
equals
() ...
Java中
equals
,
hashcode
和==的区别
== 号、
equals
方法和
hashcode
方法都是用来比较对象的,但是它们之间存在着本质的区别。== 号比较的是对象的内存地址,
equals
方法比较的是对象的内容,而
hashcode
方法则是用来唯一标识一个对象的。
java面试题集锦.pdf
equals
方法本质上就是 ==,只不过 String 和 Integer 等重写了
equals
方法,把它变成了值比较。 三、
hashCode
和
equals
3. 两个对象的
hashCode
() 相同,则
equals
() 也一定为 true,对吗? 不对,两个对象的 ...
java中
equals
()函数的用法
equals
和==的区别
在Java编程语言中,`
equals
()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别对于编写出正确、健壮的代码至关重要。 首先,`==`运算符用于基本类型(如int, char, boolean)的比较,...
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章