Object引用和Object哈希代码之间的区别

时间:2010-12-31 07:59:05

标签: java

对象的引用和java中相同对象的哈希码值之间的区别是什么?

3 个答案:

答案 0 :(得分:7)

对Object的引用就是这样。对对象的引用。

对象的哈希码是hashCode()方法的结果,取决于实现可能是各种各样的事情。默认hashCode()

  

通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要此实现技术

答案 1 :(得分:6)

它们完全是两个不同的概念。

Cat oldCat = new Cat();
Cat newCat = new Cat();
Cat oldCatRef = oldCat;

在上面的示例中,oldCatoldCatRef是对同一对象的引用。由于它们引用相同的对象,因此它们的哈希码将是相同的。

oldCatnewCat不引用同一个对象。它们是对两个不同对象的引用。但是根据它们的实现,它们可能具有相同的hashCodehashCode只是Object类中的一个方法,您可以覆盖它。

编辑(来自PeterJ): 根据JavaSE6对象规范,如果oldCat.equals(newCat)那么两者的哈希码应该相等。遵守合同是很好的编程

你可能也想检查这个问题的答案:

  

difference between hash code and reference or address of an object?

答案 2 :(得分:3)

两个不同的对象可以具有相同的hashCodereference是指向对象的唯一指针,其中hashCode是一个方便的计算属性。