Java中"=="和"equals"區別

==操作符一般用來比較兩個變量的值是否相等,即用來比較兩個變量所對應的內存中的數值是否相等。

如果引用變量指向的數據類型爲Object型的,例如:

<span style="font-size:14px;">Object object = new Object();</span>

變量object佔用一塊內存,new Object()這個對象也佔用一塊內存,只不過變量object對應的內存中存儲的數值就是new Object對象在其內存中的首地址。對於這種指向對象類型的變量,如果要比較兩個兩個變量是否指向同一對象,可以使用==操作符,而這時如果要比較這兩個對象的內容是否相同時,必須使用equals方法。例如下面的代碼:

String a = new String("str");
String b = new String("str");

a、b分別爲兩個變量,並指向一個String類型的變量,且變量值相同爲str,a、b雖然指向對象的內容是一致的,但是a、b是兩個不同的引用變量,其在內存中分配的地址不同,則使用a==b進行比較返回false,而如果使用a.equals(b)進行比較返回true,因爲a、b指向的對象中的內容都是str。


一般字符串的比較使用equals方法,基本數值類型比較使用==運算符。

如果一個類沒有自己定義equals方法,它默認的equals方法(從Object類繼承的)就是使用==操作符,也是在比較兩個變量指向的對象是否是同一對象,這時候使用equals和使用==會得到同樣的結果,如果比較的是兩個獨立的對象則總返回false。如果新寫的類希望比較每次剛創建的實例對象的內容是否相同,則應該重寫equals方法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章