A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lwj123 金牌黑马   /  2014-12-11 16:42  /  1328 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想模拟一下  对象.hashCode();的输出结果
System.out.println(stu.getClass().getName()+"@"+Integer.toHexString(stu.hashCode()))

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

评分

参与人数 1黑马币 +50 收起 理由
滔哥 + 50

查看全部评分

7 个回复

倒序浏览
每次运行程序时为啥要给你分配一样的内存地址。
回复 使用道具 举报 1 0
每次运行时内存分配的地址值不一样啊
回复 使用道具 举报
因为每次运行时CPU分配的内存不一定都在同一位置,就这个原因。
回复 使用道具 举报
Elvismao 发表于 2014-12-12 10:14
因为每次运行时CPU分配的内存不一定都在同一位置,就这个原因。

我是不是可以将hashCode理解为对象所在内存的地址值啊?
回复 使用道具 举报
stu.hashCode()就是stu对象的内存地址的意思
回复 使用道具 举报
lwj123 发表于 2014-12-12 11:37
我是不是可以将hashCode理解为对象所在内存的地址值啊?

它不是真正的地址值,但是你确实可以将它理解为是地址的一种表示;hashCode是一种算法,很复杂,没必要深究;就好像我们可以给对象一个引用,引用不是对象本身,但是他指向对象。hsahCode类似。

评分

参与人数 1黑马币 +1 收起 理由
lwj123 + 1 谢谢哈!

查看全部评分

回复 使用道具 举报
Mr.陈 中级黑马 2014-12-12 19:36:17
8#
hashcode内存随机分配  作为唯一标识
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马