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

sel*_*vam 4 java

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

che*_*vim 7

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

Object的hashcode是该hashCode()方法的结果,该方法取决于实现可能是各种各样的事情.默认值hashCode():

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


rkg*_*rkg 6

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

Cat oldCat = new Cat();
Cat newCat = new Cat();
Cat oldCatRef = oldCat;
Run Code Online (Sandbox Code Playgroud)

在上述例子中,oldCatoldCatRef是同一个对象的引用.由于它们引用相同的对象,因此它们的哈希码将是相同的.

但是oldCatnewCat没有提到同一个对象.它们是对两个不同对象的引用.但是hashCode根据它们的实现,它们可能具有相同的功能.hashCode只是一个Object可以覆盖的类中的方法.

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

您可能还想检查此问题的答案:

哈希码与对象的引用或地址之间的区别?