新手小白提问,为什么重写equals方法之后,打印对象toString的结果,最后的哈希值就改变了?

一水一木 2020-12-31 07:27:43
如图打印一个对象的值。


重写equals之后,在此打印这个对象,输出改变了


请大神解答这是为什么?
P.S.还有就是如果new了两个对象,属性一模一样,重写equals之后,打印出的哈希值一模一样,这是什么原因?
...全文
5630 2 打赏 收藏 转发到动态 举报
写回复
用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对象,返回的哈希码也一样。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧