本文介紹了Equals()方法的工作原理的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在深入研究Java的基礎知識。我從this article推斷,Java‘equals’方法意味著,如果兩個對象相等,則它們必須具有相同的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
真
實際的Java語言‘equals’方法:
public boolean equals(Object obj) {
return (this == obj);
}
在上面的示例中,a.equals(B)返回了TRUE,這意味著滿足條件‘a==b’。但為什么在該示例中‘a==b’返回FALSE?
hashCode和Address不是一樣的嗎?另外,當我們說‘a==b’或其他詞時,會比較‘hashCode’嗎?
推薦答案
String
類已重寫equals()
方法。請按照String equals()文檔進行操作。
a.equals(B)已返回True,表示條件a==b滿足
這是Object
類中equals()
的默認實現,String
類已覆蓋默認實現。當且僅當參數不為空并且是表示與此對象相同的字符序列的字符串對象時,它才返回True。
hashCode和Address不是一個嗎?
不一定。有關hashCode()的進一步閱讀。
這篇關于Equals()方法的工作原理的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,