问问以下关于 java中的hashcode()理解是否正确

qq_36328283 2017-04-08 11:27:25
各位大神好,我是一名大二的学生,因为对计算机有着由衷的热爱,所以学习了java,最近学到了hashCode()这个知识点,以下是自己的一些理解,希望各位大神這出我的理解是否存在错误。
对象实际上是照着类的样子在堆空间建立的一个引用,这个引用是一个地址,我们在对象上的操作实际上是在这个引用的基础上偏移一定的内存大小,从而实现数据存取操作的。那么hashCode()方法是每个类的公共基类Object中所具有的一个方法,它的作用是将每个对象的引用的首地址根据一定的运算后,根据运算结果将对象存储到一定的内存空间中。
从而可以得出结论:
1、 每一个对象中的hashCode()方法返回的值有且只有一个。
2、每一个hashCode()方法中,参与运算的值是这个对象的首地址。
不知上面的结论对不对。如果对,那么问题来了。即使我们重写了equals()方法,参与hash运算的值,也就是这个对象的首地址并没有变化,也就是说,equlas()方法和hashCode()方法是两个不存在一定关联的函数,这个结论肯定是错误的,然而我又不知道错误在哪里,还望各位大神指正。
...全文
230 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程点滴 2017-04-09
  • 打赏
  • 举报
回复
1、每个对象的hashCode()是程序计算的,一个对象返回多个hashCode也能实现,只是这个不符合规范 2、hashCode与对象内存分配无关 根据规范,equlas为true的,hashCode()必须相等。
shy372330 2017-04-08
  • 打赏
  • 举报
回复
判断对象是先进行equals()方法再进行hashcode()的调用

62,623

社区成员

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

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