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