我是把枚舉當作常量來使用的,枚舉中還有兩個自己的屬性,關注到這個地方的朋友對枚舉已經有了認識,這里就不再編寫枚舉的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,這些在開發中很少會去詳細的研究,但是至少我們要知道,到用的時候要保證不出問題。