區(qū)別如下:
(推薦學(xué)習(xí):java入門程序)
==操作符專門用來比較兩個變量的值是否相同,也就是用于比較變量所對應(yīng)的內(nèi)存中所存儲的數(shù)值是否相同,要比較兩個基本類型的數(shù)據(jù)或兩個引用變量是否相等只能用==操作符。
equals方法用來比較兩個獨立對象的內(nèi)容是否相同,就好比去比較兩本書是否相同,它比較的兩個對象是獨立的。
示例:
String a = new String("AA"); String b = new String("AA"); System.out.println(a==b); System.out.println(a.equals(b));
兩條new語句創(chuàng)建了兩個對象,然后用a,b兩個變量分別指向其中的一個對象,這是兩個不同的對象,ta們的首地址是不同的,即a,b中存儲的數(shù)值是不同的,所以表達(dá)式a==b將返回false,而兩個對象中的內(nèi)容是相同的,所以a,equals(b)返回了true。
(視頻教程推薦:java視頻教程)
注意:字符串的比較基本上都是使用equals方法。
如果一個類沒有自己定義的equals方法,那么它將繼承Object類的equals方法,Object類的的實現(xiàn)代碼如下:
boolean equals(Object o) { return this==o; }
這說明如果一個類沒有自己定義的equals方法,ta默認(rèn)的equals方法,等同于使用==操作符,也就是比較兩個變量指向的對象是同一個對象。這時候使用equals和==。
會得到相同的結(jié)果!!如果希望寫的類能夠比較兩個實例對象的內(nèi)容是否相同,則需要覆蓋equals方法!