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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夏晓彤 中级黑马   /  2013-3-10 18:28  /  1081 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏晓彤 于 2013-3-10 18:31 编辑

1 对象的地址值是哈希值吗?
2 如果是应该每个对象的哈希值都不同啊,在哈希标称,毕老师讲当哈希值相同的时候,在做判断,判断对象是否相同,我的疑问就来了,既然哈希值相同,对象不就是同一个吗,还有必要做2次比较吗
有张毕老师讲课的截图左边的是哈希值,右边的是对象的地址值,按老师说的问题1应该是对啊,

11.jpg (13.24 KB, 下载次数: 9)

11.jpg

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1 赞一个!

查看全部评分

1 个回复

正序浏览
问题1 :不是,
HASH 是散列表的基础计算方法,Java 内置了 hash 的支持,
java.lang.Object 默认是通过对象在内存的地址计算出来的,也就是对象的地址值不是哈希值。
而哈希值是通过对象的地址值计算的
问题2:
尽管每个对象的地址值不同,但是它们的哈希值有可能相同,
哈希算法内部我也没研究过,但是应该是用地址值套一个公式,来获得的。
那么就有可能得出相同的哈希值。
比如假设地址值是x.  而哈希算法的内部是x%2,那么就有可能很多对象的哈希值都相同
当然,哈希内部没这么简单。
所以总之尽管地址值不同,但是有可能哈希值相同。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马