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