我是把枚舉當作常量來使用的,枚舉中還有兩個自己的屬性,關注到這個地方的朋友對枚舉已經有了認識,這里就不再編寫枚舉的demo了,這里我直接說結果吧,在枚舉中使用==和equals比較效果是一樣的,查看源碼可以知道枚舉的equals方法還是通過==來比較的
public final boolean equals(Object other) {
return this==other;
}
在java中,==比較的是內存地址(也可以說是對象的引用),equals比較的值,這兩個區別在String中最明顯了,因為String中重寫了Object的equals方法,源碼如下:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
還有一些對象也重寫了equals方法,比如Integer,這些在開發中很少會去詳細的研究,但是至少我們要知道,到用的時候要保證不出問題。
