黑马程序员技术交流社区

标题: 关于对象.hashCode();的输出结果的问题 [打印本页]

作者: lwj123    时间: 2014-12-11 16:42
标题: 关于对象.hashCode();的输出结果的问题
我想模拟一下  对象.hashCode();的输出结果
System.out.println(stu.getClass().getName()+"@"+Integer.toHexString(stu.hashCode()))

这句话每一次的输出的哈希值都不一样,为什么?请问这是是怎么计算的?


作者: 史云龙    时间: 2014-12-11 22:29
每次运行程序时为啥要给你分配一样的内存地址。
作者: mmppp    时间: 2014-12-12 09:15
每次运行时内存分配的地址值不一样啊
作者: Elvismao    时间: 2014-12-12 10:14
因为每次运行时CPU分配的内存不一定都在同一位置,就这个原因。
作者: lwj123    时间: 2014-12-12 11:37
Elvismao 发表于 2014-12-12 10:14
因为每次运行时CPU分配的内存不一定都在同一位置,就这个原因。

我是不是可以将hashCode理解为对象所在内存的地址值啊?
作者: fatesabering    时间: 2014-12-12 11:42
stu.hashCode()就是stu对象的内存地址的意思
作者: Elvismao    时间: 2014-12-12 15:29
lwj123 发表于 2014-12-12 11:37
我是不是可以将hashCode理解为对象所在内存的地址值啊?

它不是真正的地址值,但是你确实可以将它理解为是地址的一种表示;hashCode是一种算法,很复杂,没必要深究;就好像我们可以给对象一个引用,引用不是对象本身,但是他指向对象。hsahCode类似。
作者: Mr.陈    时间: 2014-12-12 19:36
hashcode内存随机分配  作为唯一标识




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2