Java-Object.equals方法和==有什么區別?如果沒有區別,應該怎么去產生區別?
uj5u.com熱心網友回復:
一般情況下equal表示的是內容相同,==表示的是參考相同。比如 String s1 = new String("string"); String s2 = new String("string"); 則 s1.equals(s2)為true,s1==s2為false。
如果 String s3 = s1; 則s1.equals(s3)和s1==s3均為true。
object類的equal好像是直接比較==的,所以如果自定義類的話,一般是要求重寫equal方法的。object類只是提供這個統一的方法而已,內容要自己定義。
uj5u.com熱心網友回復:
這個區別是肯定有的 簡單點來說就是equals只比較內容是否相等 而==不僅比較內容是否相等還會比較存盤地址是否相等uj5u.com熱心網友回復:
這是Object的equals方法public boolean equals(Object obj) {
return (this == obj);
}
想要有區別就重寫,比如String類就重寫了
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
uj5u.com熱心網友回復:
有區別,==只能比較基礎型別,如果是物件型別,例如Person物件,你就要自己寫equals方法比較這個物件的哪些屬性從而認為是相等的轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/173358.html
標籤:Java SE
上一篇:救救孩子
