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

2

3

我們可以看到在Object中“equals()”的實現指示簡單的使用了“==”也就是之判斷了,兩個對象的引用相等。這也就是為什么我們在使用“equals()”時必須重寫這個方法的原因了。
在jdk的幫助文檔中,對于“equals()”和“HashCode()”有這樣的說法,如果兩個對象使用equals()返回為true,則使用HashCode()必然返回的值必然相等,反之則不一定啊。
為什么呢?其實舉個簡單的例子,我們有很多桶,每個桶都可以放很多對象,那么HashCode()得到的值就是每個桶的編號,這樣說也許您就明白了為什么jdk會有這樣的說法了。至于為什么會有這樣的設計,學過數據結構的朋友一定知道一些查找的方法吧,其中二分法就是一種高效的查找方法吧。那么HashCode也就是個“多分法”吧。