這篇文章將為大家詳細講解有關(guān)java中equals和“==”有什么區(qū)別,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)公司是一家成都網(wǎng)站設(shè)計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè),提供網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,網(wǎng)站制作,建網(wǎng)站,按需搭建網(wǎng)站,網(wǎng)站開發(fā)公司,從2013年創(chuàng)立是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價值為核心業(yè)務(wù),全程參與項目的網(wǎng)站策劃設(shè)計制作,前端開發(fā),后臺程序制作以及后期項目運營并提出專業(yè)建議和思路。
區(qū)別:
== 比較的是變量(棧)內(nèi)存中存放的對象的(堆)內(nèi)存地址,用來判斷兩個對象的地址是否相同,即是否是指相同一個對象。比較的是真正意義上的指針操作。
equals用來比較的是兩個對象的內(nèi)容是否相等,由于所有的類都是繼承自java.lang.Object類的,所以適用于所有對象,如果沒有對該方法進行覆蓋的話,調(diào)用的仍然是Object類中的方法,而Object中的equals方法返回的卻是==的判斷。
java中的數(shù)據(jù)類型可以分為兩類:
基本數(shù)據(jù)類型
byte,short,char,int,long,float,double,boolean
基本數(shù)據(jù)類型之間的比較需要用雙等號(==),因為他們比較的是值。
引用數(shù)據(jù)類型
接口、類、數(shù)組等非基本數(shù)據(jù)類型
Java中的字符串String屬于引用數(shù)據(jù)類型,因為String是一個類。
當他們用(==)進行比較的時候,比較的是他們在內(nèi)存中的存放地址,所以,除非是同一個new出來的對象,他們的比較后的結(jié)果為true,否則比較后結(jié)果為false。因為沒new一次就會重新開辟一個新的堆內(nèi)存空間
Entity entity = new Entity(); Entity entity1 = new Entity(); Entity entity2 = entity; System.out.println(entity==entity2); System.out.println(entity.equals(entity2)); System.out.println(entity.equals(entity1)); System.out.println(entity==entity1);
結(jié)果:
true true false false
總結(jié):
對于復(fù)合數(shù)據(jù)類型之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是內(nèi)存中的存放位置的地址值,跟雙等號(==)的結(jié)果相同;如果被復(fù)寫,按照復(fù)寫的要求來。
== 的作用:
基本類型:比較的就是值是否相同;
引用類型:比較的就是地址值是否相同。
equals 的作用:
引用類型:默認情況下,比較的是地址值,重寫該方法后比較對象的成員變量值是否相同。
關(guān)于java中equals和“==”的區(qū)別就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。