社区
Java SE
帖子详情
hashcode是什么?他的值代表的什么意思?
cn-sz-xuwf
2007-07-11 12:33:55
请问,我在使用toString方法的时候返回一个"类型名@#$%#^%$"的东西,看书上讲是hashcode,那hashcode是什么呢?他的值代表什么意思呢?为什么会有hashcode呢?
...全文
5138
35
打赏
收藏
hashcode是什么?他的值代表的什么意思?
请问,我在使用toString方法的时候返回一个"类型名@#$%#^%$"的东西,看书上讲是hashcode,那hashcode是什么呢?他的值代表什么意思呢?为什么会有hashcode呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
35 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
baolin811
2012-06-05
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
一个对象的HashCode就是一个简单的Hash算法的实现,虽然它和那些真正的复杂的
Hash算法相比还不能叫真正的算法,但如何实现它,不仅仅是程序员的编程水平问题,
而是关系到你的对象在存取时性能的非常重要的问题.有可能,不同的HashCode可能
会使你的对象存取产生,成百上千倍的性能差别.
默认的实现是将对象内部地址转化为整数作为HashCode,这当然能保证每个对象具有不同
的……
[/Quote]
回答的很好,但不能同意这句话:"这当然能保证每个对象具有不同的HasCode"
实际上不同的对象也有可能有相同的hashCode……。
龙腾冰
2012-03-22
打赏
举报
回复
嗯啊,学习一下
Leson_Yin
2012-03-22
打赏
举报
回复
最近喜欢挖坟,哈哈。。。
i李小武
2011-03-15
打赏
举报
回复
http://blog.csdn.net/ol_beta/archive/2010/11/26/6037852.aspx
楼主看看这个有用么!
linken88815
2011-03-15
打赏
举报
回复
受教!
liuxuejin
2011-03-15
打赏
举报
回复
由于java没有指针,但是却用了一种很灵活的方式来查找对象,那就是hashcode,hashcode如果没有重载的话,那么这个值就是对象的地址,如果重载了,那就是具体的实现,比如 Ineger的hashcode就是它的value,String
的hashcode就是著名的33法改进过来的算法计算出来的!hashcode可以理解为一种标记,就好像设计数据库表主键要唯一的需要一样!
一个会写bug的dog
2011-03-13
打赏
举报
回复
呵呵,算是学习了一下!
zqfddqr
2011-03-13
打赏
举报
回复
[Quote=引用 2 楼 weiqiyiji 的回复:]
hashCode是散列码,用来快速查询用的
你看到的那一串的格式如下,比如一个String@4e57de
"@ "前面的是你的类名,后面的就是散列码的16进制表示。hashCode的查询原理:先有很多个数组,然后你要往容器里面放东西,比如hashSet,如放一个String=“Hello”,那么计算机会先计算散列码,然后放入相应的数组中,数组的索引就是从散列吗计算来的,然后再装入数组里的容器里……
[/Quote]够全
清晨v
2011-03-13
打赏
举报
回复
学习了,
thelingers
2011-03-13
打赏
举报
回复
[Quote=引用 3 楼 gaohua027 的回复:]
一个对象的HashCode就是一个简单的Hash算法的实现,虽然它和那些真正的复杂的
Hash算法相比还不能叫真正的算法,但如何实现它,不仅仅是程序员的编程水平问题,
而是关系到你的对象在存取时性能的非常重要的问题.有可能,不同的HashCode可能
会使你的对象存取产生,成百上千倍的性能差别.
默认的实现是将对象内部地址转化为整数作为HashCode,这当然能保证每个对象具有不同
的H……
[/Quote]这个比较好,言简意赅
jionjionyoushen
2011-03-08
打赏
举报
回复
学习学习!
shagan
2011-03-08
打赏
举报
回复
对于查看并访问一个值,我想你知道数组最快,
但是,现实中,访问一个值直接以数组来表示很少,
比如50个学生,以学号为PK(XXX001~XXX050),我们可以把它们以学号放入一个数组中,
XXX001->stu[0]-----XXX050->stu[49],在程序中给出一个学号,我们可以以一种简单的方式映射到数组中,
定一个函数F(学号)=数组顺序,F则称之为hash函数,
而现实中F得到数组顺序还可能产生冲突,即不同对象,产生的hash值是一个的,在java中,则需要equal函数作补充,解决冲突。
所以hashCode可以看作是参数数组顺序的hash函数,你在java的Debug中,可以看到HashMap等之类的Hash类中,均有一大堆数组产生。
yanjianyue123
2010-09-03
打赏
举报
回复
学习了!
涛涛_2009
2010-03-09
打赏
举报
回复
对汉字是怎样进行哈希编码的呢,不解
pauliuyou
2010-02-27
打赏
举报
回复
一个对象快速定位自己的索引信息用的
狂想者
2010-02-27
打赏
举报
回复
不是很明白,需要进一步学习。。。。。
fishrui
2009-10-27
打赏
举报
回复
建议LZ看下《数据结构》中关于哈希表的介绍。
1.内存中有张哈希表,哈希表的数据结构类似二维数组。[0]存储的是哈希值,后面存储的就是哈希值和[0]相等的对象。所以哈希值相等不一定等同于对象相等。就像旅馆客房有的房间住几个人,不能通过确定房间号就确定某个具体的人。
2.哈希码是散列码,越散列说明重复越小,效率越高。通过哈希码可以快速的地位内存地址。
火龙果被占用了
2009-10-26
打赏
举报
回复
比如说一个 int[] 返回的就是 [I@2234ac 之类的,如果是 long[][] 得到的是 [[J@2234ad
如果是 Object 那就是 Ljava.lang.Object;@2234ad
如果 hashCode() 没有被重写的话,那基本上可以看作是对象所引用内存的地址。
springbird
2009-10-26
打赏
举报
回复
新手,学习了
dw578791891
2009-10-26
打赏
举报
回复
还是不是很清楚
3L的说是将对象转化为hashcode那么==成立
那么hashcode就应该相等啊
新手不知道说的对不对!
加载更多回复(15)
hashcode
值
指的是什么_面试官问我:
hashcode
是什么?和equals是兄弟吗?
秋招的时候还记得面试官问过我
hashcode
是什么,对于int、long、string类型的
hashcode
有什么区别,和equals一起是怎么使用的,为什么重写
hashcode
的同时也要重写equals。八股文背多了,也只是会表面,有空的时候还是...
hashcode
是什么?
一、
hashcode
是什么? 1、hash和hash表是什么? 想要知道这个
hashcode
,首先得知道hash,通过百度百科看一下: hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash
值
。这个时候,...
什么是
hashCode
?
·通常,口头描述中的
hashCode
指的是
hashCode
()方法,或该方法的返回
值
hashCode
()方法是由Obiect类定义的,所以,在Java中,所有类都有该方法,并且,所有类都可以重写该方法·通俗来说,
hashCode
的设计是提供给JVM...
java
hashcode
位数_面试官问我:
hashcode
是什么?和equals是兄弟吗?
秋招的时候还记得面试官问过我
hashcode
是什么,对于int、long、string类型的
hashcode
有什么区别,和equals一起是怎么使用的,为什么重写
hashcode
的同时也要重写equals。八股文背多了,也只是会表面,有空的时候还是...
hashCode
()或
HashCode
的作用是什么?
2)
HashCode
哈希码是该对象的内存地址通过哈希Hash算法计算出的一个整数
值
,
代表
该对象在哈希表中的位置,作用主要是为了提高查找对象的快捷性,通过
HashCode
可以快速定位对象的存储地址。(1)
hashCode
()是Object类...
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章