不对
首先要明白什么是hashCode以及hashCode的原理
hash是一个函数,他就是一个算法(有很多种)hashcode是对象通过hash函数得到值,根据这个值把对象放入hash表中的相应地址,注意这个地址是在hash表中的地址,不是对象的物理地址。那么hashcode是怎么得到的呢?hashcode是通过对象的内容比如说12,通过hash算法得到2这个数,而在hash表中有1,2,3,4,5,6,7,8这八个位置,那么这个对象在hash表中的地址就是2这个位置。当然这八个位置可以有很多值,比如说1这个位置里面有n个值。
那么hashcode有什么用呢?
HashCode的存在主要是为了查找的快捷性,HashCode是用来在散列存储结构中确定对象的存储地址的(后半句说的用hashcode来代表对象就是在hash表中的位置)
比如说要存100个不相同的值,那么每存一个值还要遍历一遍,很麻烦。所以用hash表,每存一个值都把这个值放入hash表中,假设当存到第99个值得时候,其hash为1,那么只要把第99个值和hash是1位置上的所有值比较就行了,这样很方便,也很快。
所以一般比较对象时先调用hashcode(缩小比较范围),然后在用equals对hash表中一个位置中的值进行对比。
所以
1、如果两个对象equals相等,那么这两个对象的HashCode一定也相同
2、如果两个对象的HashCode相同,不代表两个对象就相同,只能说明这两个对象在散列存储结构中,存放于同一个位置