# Object通用方法
# ==
与equals
==
:判断两个对象的地址是否相等,即判断两个对象是否是同一个对象。
equals()
:判断两个对象是否相等,但有两种使用情况:
- 如果类没有覆盖
equals()
方法,则通过equals()
比较该类的两个对象时,等价于通过==
比较这两个对象。 - 如果类覆盖了
equals()
方法,一般都覆盖equals()
方法来比较两个对象的内容是否相等,若相等则直接返回true
。
# hashCode()
与equals()
hashCode()
的作用是获取哈希码,也称为散列码;它实际上是返回一个int
整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()
定义在JDK的Object.java
中,意味着Java的任何类都包含hashCode()
函数。hashCode()
在散列表中才有用,在其它情况下没用。在散列表中hashCode()
的作用是获取对象的散列码,进而确定该对象在散列表中的位置。
- 如果两个对象相等,则
hashCode
也一定是相同的 - 如果两个对象相等,则对两个对象分别调用
equals()
方法都返回true
- 两个对象有相同的
hashCode
值,也不一定是相等的 equals
方法被覆盖过,则hashCode
方法也必须被覆盖hashCode()
的默认行为是对堆上的对象产生独特值。如果没有重写hashCode()
,则该class
的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)