1

==

==的作用是判断两个对象的地址是不是相等。即,判断两个对象是不试同一个对象。

equals()

equals() 的作用是 用来判断两个对象是否相等。

equals()方法存在于Object类中,Object类是所有类的父类。

public boolean equals(Object obj) {
   
    return (this == obj);
}

通过类是否覆盖equals()方法,将它分为2类:

  • 若某个类没有覆盖equals()方法,当它的通过equals()比较两个对象时,实际上是比较两个对象是不是同一个对象。这时,等价于通过“==”去比较这两个对象。
  • 我们可以覆盖类的equals()方法,来让equals()通过其它方式比较两个对象是否相等。通常的做法是:若两个对象的内容相等,则equals()方法返回true;否则,返回fasle。

2

hashCode()

hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。

hashCode()函数存在于Object类中,Object类是所有类的父类。

public native int hashCode();

hashCode() 在散列表中才有用,在其它情况下没用。
在散列表中hashCode() 的作用是获取对象的散列码,进而确定该对象在散列表中的位置。

hashCode() 和 equals() 的关系

参考