Java Enum 比較用 == 還是 eques


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM