对象的引用和java中相同对象的哈希码值之间的区别是什么?
答案 0 :(得分:7)
对Object的引用就是这样。对对象的引用。
对象的哈希码是hashCode()
方法的结果,取决于实现可能是各种各样的事情。默认hashCode()
:
通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要此实现技术
答案 1 :(得分:6)
它们完全是两个不同的概念。
Cat oldCat = new Cat();
Cat newCat = new Cat();
Cat oldCatRef = oldCat;
在上面的示例中,oldCat
和oldCatRef
是对同一对象的引用。由于它们引用相同的对象,因此它们的哈希码将是相同的。
但oldCat
和newCat
不引用同一个对象。它们是对两个不同对象的引用。但是根据它们的实现,它们可能具有相同的hashCode
。 hashCode
只是Object
类中的一个方法,您可以覆盖它。
编辑(来自PeterJ): 根据JavaSE6对象规范,如果oldCat.equals(newCat)那么两者的哈希码应该相等。遵守合同是很好的编程
你可能也想检查这个问题的答案:
difference between hash code and reference or address of an object?
答案 2 :(得分:3)
两个不同的对象可以具有相同的hashCode
。 reference
是指向对象的唯一指针,其中hashCode
是一个方便的计算属性。