在Java中,对象的引用和相同对象的哈希码值有什么区别?
它们是完全不同的概念。
Cat oldCat = new Cat();
Cat newCat = new Cat();
Cat oldCatRef = oldCat;
oldCat
和oldCatRef
是指向同一对象的引用。因为它们引用同一对象,所以它们的哈希码将相等。oldCat
和newCat
不引用同一对象。它们是指向两个不同对象的引用。但是基于它们的实现,它们可能具有相同的hashCode
。 hashCode
只是Object
类中可以重写的方法。oldCat.equals(newCat)
,则两者的哈希码应该相等。遵守这个契约是好的编程习惯。一个对象的引用就是一个指向该对象的引用。
对象的哈希码是hashCode()
方法的结果,具体取决于实现方式。默认的hashCode()
:
通常是通过将对象的内部地址转换为整数来实现的,但这种实现技术不是Java编程语言所必需的。
两个不同的对象可以具有相同的hashCode
。一个reference
是指向对象的唯一指针,其中hashCode
是一个方便计算的属性。