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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Eric1225 中级黑马   /  2014-10-27 21:01  /  983 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对象的引用与hashcode的关系,这个一直没搞清楚,我们所说的对象的引用到底是什么,地址?还是hashcode。为什么输出的是 hashcode?而且不同对象的hashcode可以相同。求解

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
本帖最后由 空洞的望着窗外 于 2014-10-28 08:21 编辑

问题很好,我的理解是:Ha s=new  Ha(),s是对象引用指向new出来的对象,new出来的对象有其内存地址,每一个对象都会有自己的hashcode,两个对象在比较equals的时候会用hashcode,用hashcode是去哈希表中找这个值key,如果两个对象hashcode相等,哈希表上的key就相同   两个都在这个key的链表上,这样说你明白不,其实我也不明白。
回复 使用道具 举报
一个一个来回答  第一 对象的引用:就是引用对象嘛,举个例子, String s=“abc”;
这里“abc”就是一个String对象, s不是对象“abc”,而是对象“abc”的引用
第二 地址值指的是对象的(地址的值)---这个明白否?
就是对象有一个位置, 传说中的地址, 这个地址用了一个hashcode值来表示
举个例子,一栋楼在二区13座, 二区13座就是地址, 这个地址用了B13来表示 , B13就是它的地址值
第三,不同对象的hashcode的地址值一定是不同的,同一个位置上不可能出现两个东西,你说的应该是 s 和 “abc”为什么hashcode相同了吧,或者 String n= “abc”,结果n和s的hashcode是相同的吧?
那是因为他们指向的都是同一个对象“abc”,地址当然都是一样的,就像一栋楼,地址就是那里,如果你用a表示这栋楼地址,又用b表示这栋楼地址,那么a=b 因为就是同一个地址嘛。

最后建议基础一定要牢,如果在视频第二天的地址图看懂了,后面这些理解起来就容易的多

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
还是针对性的多看视频,自己理解最好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马