本文介紹了Equals()方法的工作原理的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我正在深入研究Java的基礎(chǔ)知識(shí)。我從this article推斷,Java‘equals’方法意味著,如果兩個(gè)對(duì)象相等,則它們必須具有相同的hashCode()。
這是我的示例。
public class Equals {
/**
* @param args
*/
public static void main(String[] args) {
String a = new String("a");
String b = new String("a");
System.out.println("a.hashCode() "+a.hashCode());
System.out.println("b.hashCode() "+b.hashCode());
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
輸出:
A.hashCode()97
B.hashCode()97
FALSE
真
實(shí)際的Java語(yǔ)言‘equals’方法:
public boolean equals(Object obj) {
return (this == obj);
}
在上面的示例中,a.equals(B)返回了TRUE,這意味著滿足條件‘a(chǎn)==b’。但為什么在該示例中‘a(chǎn)==b’返回FALSE?
hashCode和Address不是一樣的嗎?另外,當(dāng)我們說(shuō)‘a(chǎn)==b’或其他詞時(shí),會(huì)比較‘hashCode’嗎?
推薦答案
String
類已重寫(xiě)equals()
方法。請(qǐng)按照String equals()文檔進(jìn)行操作。
a.equals(B)已返回True,表示條件a==b滿足
這是Object
類中equals()
的默認(rèn)實(shí)現(xiàn),String
類已覆蓋默認(rèn)實(shí)現(xiàn)。當(dāng)且僅當(dāng)參數(shù)不為空并且是表示與此對(duì)象相同的字符序列的字符串對(duì)象時(shí),它才返回True。
hashCode和Address不是一個(gè)嗎?
不一定。有關(guān)hashCode()的進(jìn)一步閱讀。
這篇關(guān)于Equals()方法的工作原理的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,