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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李龙龙 黑马帝   /  2011-11-16 02:36  /  2136 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个对象的在内存的地址,是不是哈希值,直接打印对象显示的值是哪一个。两者有没有联系。

4 个回复

倒序浏览
qy 黑马帝 2011-11-16 02:59:41
沙发
内存地址是不是哈希值,这要看你是怎么实现哈希函数了。
直接打印的对象也不一定是哈希值。这要看你具体怎么实现哈希函数的

heima1.jpg (491.53 KB, 下载次数: 60)

heima1.jpg
回复 使用道具 举报
qy 黑马帝 2011-11-16 03:12:23
藤椅
当你的到对象的哈希值后,可以根据该哈希值找到对象的存储区域,
再拿这个存储区域的每一个元素与该对象进行equals方法比较。就不用便利整个集合了
回复 使用道具 举报
泼孩 黑马帝 2011-11-16 09:54:31
板凳
哈希值只是通过哈希算法得出
直接打印所显示的与你打印方法有关,如字符串,整形等
s.o.p("a");
s.o.p(1);
内存分堆内存和栈内存,
涉及到引用数据类型,如一个数组,数组中的元素在堆内存中都有一个16进制的地址用来存储,将地址值赋给变量变量指向数组,使用其中的元素,即引用该数组。
回复 使用道具 举报
System.out.println(per1);//Demo@7d772e
System.out.println(per1.toString());//Demo@7d772e
System.out.println(getClass().getName() + '@' + Integer.toHexString(hashCode()));//Demo@7d772e
@前的是Class的类名,@之后的是得到的哈希值的十六进制表现形式。
欲了解哈希值,单击链接http://baike.baidu.com/view/273836.htm
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马