導航:首頁 > 編程語言 > javaequals比較

javaequals比較

發布時間:2023-06-07 00:56:36

Ⅰ 深入java的equals方法,怎麼比較兩個對象的

當定義一個類時,首先這個類會繼承Object類(所有類的父類)的equals方法,然後開發者可以根據具體業務場景去考慮要不要重寫equals方法。

publicbooleanequals(Objectobj){
return(this==obj);
}

上面代碼即是Object的equals方法的實現, == 判斷,即兩個對象的地址完全一樣的時候才相等。

當開發者定義類時不重寫equals方法,則實際調用中使用Object這個父類的equals方法實現。

下面看看String的equals方法:

publicbooleanequals(ObjectanObject){
if(this==anObject){
returntrue;
}
if(anObjectinstanceofString){
StringanotherString=(String)anObject;
intn=value.length;
if(n==anotherString.value.length){
charv1[]=value;
charv2[]=anotherString.value;
inti=0;
while(n--!=0){
if(v1[i]!=v2[i])
returnfalse;
i++;
}
returntrue;
}
}
returnfalse;
}

這就是String重寫的equals方法,可以仔細看看,很有參考價值。

接下來寫段類定義的代碼:

publicclassPerson{
privateStringname;//姓名
privateintage;//年齡
privateStringspeciality;//特長

@Override
publicbooleanequals(Objectobj){
//兩個對象是同一個時,直接returntrue
if(this==obj){
returntrue;
}
if(objinstanceofPerson){
//比較對象也是Person對象時,判斷name和age是否都相同
Personp=(Person)obj;
returnname.equals(p.name)&&age==p.age;
}
returnfalse;
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicintgetAge(){
returnage;
}

publicvoidsetAge(intage){
this.age=age;
}

publicStringgetSpeciality(){
returnspeciality;
}

publicvoidsetSpeciality(Stringspeciality){
this.speciality=speciality;
}
}

測試代碼:

publicclassTest{

publicstaticvoidmain(String[]args)throwsIOException{
Personp1=newPerson("張三",20,"java");
Personp2=newPerson("張三",20,"python");

System.out.println(p1.equals(p2));
}
}

根據Person重寫的equals方法可以知道,運行結果為 true

如果Person沒有重寫equals方法,那麼會調用Object的equals方法,運行結果為 false

所以實際怎麼比較兩個對象這完全是看開發者也就是你自己的意思

Ⅱ Java中==和equal有什麼區別

Java中==和equal的區別為:

1、== 表示 判斷2個變數或對象實例是否指向同一個內存空間,equals()表示 判斷2個變數或對象實例所指向的內存空間的值是否相同。

2、== 表示 對內存地址進行比較,equals()表示 對字元串的內容進行比較。

3、== 表示引用是否相同,equals() 表示值是否相同。

Ⅲ java中equals使用方法

java中equals使用方法:

  1. equals 方法是String類從它的超類Object中繼承的, 被用來檢測兩個對象是否相等,即兩個對象的內容是否相等,區分大小寫。

    對於字元串變數來說,使用「==」和「equals()」方法比較字元串時,其比較方法不同。「==」比較兩個變數本身的值,即兩個對象在內存中的首地址。「equals()」比較字元串中所包含的內容是否相同。例如:

  2. s1=newString("abc");
    s2=newString("abc");
    s1.equals(s2)是true

3.對於非字元串變數來說,"=="和"equals"方法的作用是相同的都是用來比較其對象在堆內存的首地址,即用來比較兩個引用變數是否指向同一個對象。

classA
{
Aobj1=newA();
Aobj2=newA();
}
obj1.equals(obj2)是false
閱讀全文

與javaequals比較相關的資料

熱點內容
編譯客戶端需要什麼系統 瀏覽:847
Python如何輸出最大浮點數 瀏覽:364
怎麼在伺服器上更改語言 瀏覽:941
Linux開機信息 瀏覽:762
怎麼才能把app靜音掉 瀏覽:860
u盤裝系統要解壓iso嗎 瀏覽:889
nat雲伺服器異常 瀏覽:294
三極女鬼電影 瀏覽:508
氛圍燈怎麼用app連接 瀏覽:724
php返回http請求 瀏覽:828
特種兵楊洛txt全文下載 瀏覽:961
易語言播放器怎麼能靜態編譯出來 瀏覽:532
pdf是蘋果的 瀏覽:774
計算機演算法書籍推薦 瀏覽:642
主角叫林楓游戲頭盔 瀏覽:49
android畫空心圓 瀏覽:22
中通快運程序員 瀏覽:240
戀聽網 瀏覽:389
新睿雲伺服器輸入憑證登錄不上去 瀏覽:673
新奇書網 瀏覽:529