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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊志伟 高级黑马   /  2013-11-26 18:48  /  1890 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 樊志伟 于 2013-11-26 18:56 编辑

hash值是什么?毕老师讲day04-02的视频中讲数组的时候这么说,
int arr[] = {3,6,5,1,8,9,67};
System.out.prinln(arr);
此处打印的是arr的hash值,是arr数组的内存存放地址,毕老师的意思是不是说hash值就是内存地址?
但是,在day14-12视频中讲HashSet的时,相同的hash值可以存放两个不同对象,我糊涂了,hash值到底是什么意思?同一地址上可以有两个对象??求大神指导。。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

3 个回复

倒序浏览
本帖最后由 freehiker 于 2013-11-26 19:34 编辑

是内存地址,但严格意义上来说,因为hashCode()被覆盖,所以并不是真正的内存地址。还有就是,hashset中,先是看hashcode,若hashcode,再用equals比较值是否相同,若相同则会存储失败。
回复 使用道具 举报
freehiker 发表于 2013-11-26 19:32
是内存地址,但严格意义上来说,因为hashCode()被覆盖,所以并不是真正的内存地址。还有就是,hashset中, ...

嗯,但是我的疑问就是,为什么在同一个地址上可以有多个对象?
回复 使用道具 举报
樊志伟 发表于 2013-11-26 19:38
嗯,但是我的疑问就是,为什么在同一个地址上可以有多个对象?

我觉得这可以通过现实世界去理解,一个班级里有好多学生一样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马