社区
Java SE
帖子详情
新手小白提问,为什么重写equals方法之后,打印对象toString的结果,最后的哈希值就改变了?
一水一木
2020-12-31 07:27:43
如图打印一个对象的值。
重写equals之后,在此打印这个对象,输出改变了
请大神解答这是为什么?
P.S.还有就是如果new了两个对象,属性一模一样,重写equals之后,打印出的哈希值一模一样,这是什么原因?
...全文
5630
2
打赏
收藏
新手小白提问,为什么重写equals方法之后,打印对象toString的结果,最后的哈希值就改变了?
如图打印一个对象的值。 重写equals之后,在此打印这个对象,输出改变了 请大神解答这是为什么? P.S.还有就是如果new了两个对象,属性一模一样,重写equals之后,打印出的哈希值一模一样,这是什么原因?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
捏造的信仰
2021-01-02
打赏
举报
回复
后面这个是你每次运行都可能不一样的,跟你是否改了代码无关。
鸡窝里的毛
2020-12-31
打赏
举报
回复
在Java中,哈希码代表对象的特征。
例如对象 String str1 = “aa”, str1.hashCode= 3104
String str2 = “bb”, str2.hashCode= 3106
String str3 = “aa”, str3.hashCode= 3104
根据HashCode由此可得出str1!=str2,str1==str3
下面给出几个常用的哈希码的算法。
1、
Object类的hashCode.返回对象的 [1] 内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样
。
2、String类的hashCode.根据String类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串所在的堆空间相同,返回的哈希码也相同。
3、
Integer类,返回的哈希码就是Integer对象里所包含的那个整数的数值
,例如Integer i1=new Integer(100),i1.hashCode的值就是100 。由此可见,2个一样大小的Integer对象,返回的哈希码也一样。
重写
toString
和
equals
方法
重写
toString
和
equals
方法
的意义以及
方法
equals
,hashcode,
toString
NULL 博文链接:https://jackosn-liao.iteye.com/blog/528757
LRF-
重写
toString
()
方法
的意义,
重写
hashCode()和
equals
()
方法
的意义,以及为什么
重写
了
equals
方法
还要
重写
hashCode()
方法
目录:一.
重写
toString
()
方法
的意义二.
重写
hashCode()和
equals
()
方法
的意义三.为什么
重写
equals
()
方法
后还要
重写
hashCode()
方法
?以上是我对
重写
toString
(),hashCode()和
equals
()
方法
的理解,不足之处欢迎批评指出! 一.
重写
toString
()
方法
的意义 在Object 类的
toString
方法
返回一个字符串,该字符串由类名、 标记符“@”和此
对象
哈希码的无符号十六进制表示组成 所以在不
重写
toString
方法
的情况下会返回一个为:
一文让你搞懂:为什么
重写
equals
方法
的时候要同时
重写
hashCode
方法
在Java中,
重写
equals
方法
时通常需要同时
重写
hashCode
方法
,以确保
对象
在基于哈希表的集合(如HashMap、HashSet)中能够正确工作。hashCode
方法
用于生成
对象
的哈希码,而
equals
方法
用于判断两个
对象
是否相等。根据规则,如果两个
对象
通过
equals
方法
判断为相等,它们的hashCode值也必须相等。如果只
重写
equals
方法
而不
重写
hashCode
方法
,可能会导致哈希集合无法正确去重,因为集合在判断
对象
是否相等时,首先比较的是哈希码,只有在哈希码相等时才会调用
equals
方法
。
Java-
重写
equals
和
toString
方法
文章目录Java-
重写
toString
方法
和
equals
方法
public String
toString
():public boolean
equals
(Object obj) Java-
重写
toString
方法
和
equals
方法
Object类作为java的根类,是所有类的直接或者间接父类,这意味着,当我们创建一个类,这个类就自动继承了Object的
方法
。在Object类中,定义了许多
方法
,其中有2个
方法
: public String
toString
(): 从jdk开发手册中可以了解到,对于一
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章