# Object通用方法

# ==equals

==:判断两个对象的地址是否相等,即判断两个对象是否是同一个对象

equals():判断两个对象是否相等,但有两种使用情况:

  • 如果类没有覆盖equals()方法,则通过equals()比较该类的两个对象时,等价于通过==比较这两个对象。
  • 如果类覆盖了equals()方法,一般都覆盖equals()方法来比较两个对象的内容是否相等,若相等则直接返回true

# hashCode()equals()

hashCode()的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()定义在JDK的Object.java中,意味着Java的任何类都包含hashCode()函数。hashCode()在散列表中才有用,在其它情况下没用。在散列表中hashCode()的作用是获取对象的散列码,进而确定该对象在散列表中的位置。

  1. 如果两个对象相等,则hashCode也一定是相同的
  2. 如果两个对象相等,则对两个对象分别调用equals()方法都返回true
  3. 两个对象有相同的hashCode值,也不一定是相等的
  4. equals方法被覆盖过,则hashCode方法也必须被覆盖
  5. hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写hashCode(),则该 class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)