在學習JAVA認證過程中,每個人會遇到每個人不同的問題,或小或大,下面yjbys小編爲大家分享的是關於Java的對象equals方法,希望對大家學習JAVA有幫助!
不是所有的equals都是比較整個對象的。
#1.普通Object類:
先看源碼:
public boolean equals(Object obj) {
return (this == obj);
}
看到了沒,用"==",比較的是對象引用,也就是地址。假如兩個對象傳入的參數一樣,但是都用new去創建,地址就不同了,那麼用equals返回的'就是false.
#ng類:
先看源碼:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == t) {
char v1[] = value;
char v2[] = e;
int i = offset;
int j = et;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
比較的是內容,所以只要內容一樣,用new去創建的兩個String對象,調用equals返回true.
#ger類
先看源碼:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj)。intValue();
}
return false;
}
一樣是比較內容。