記錄自己今天理解的 equals 方法

2021-07-02 01:39:00 字數 811 閱讀 6406

a:

string s1,s2;

s1 = new string("god");

s2 = new string("god");

system.out.println(s1.equals(s2));

這裡的結果是 true,因為這裡的equals比較的是兩個物件的內容即「god」,而如果是這樣的話: b:

public class equalstest

}class student}

這是為什麼?

後來了解了,原來在a中的s1,s2因為是string型別的,而在源**中string類裡已經將equals重寫了,下面是源**:

public boolean equals(object anobject)

if (anobject instanceof string)

return true;}}

return false;} 

而在b中,因為s1,s2是student型別的,而student類沒有重寫equals方法,s1.equals(s2)

呼叫的是object類中的equals方法,而object類中的equals方法是比較位址的,如下是object中的equals方法

public boolean equals(object obj)

所以,equals方法比較的是s1,s2

的位址,而不是內容,所以輸出就會為false.

總結的話,就是說如果說比較的物件的類中沒有重寫equals方法,那麼就是比較的位址,如果比較的物件的類中重寫了equals方法,那麼就要看重寫後的方法實現的是什麼。

寫寫今天理解的事務

以下理解和 只是給我自己看的,不保證正確性,所以有錯還請諒解並幫我指正,謝謝 我們都知道,事務有兩種 程式設計式事務和宣告式事務。程式設計式事務 主要是通過 類,利用aop技術進行乙個封裝呼叫 宣告式事務 底層是程式設計式事務,加上反射機制進行包裝,有註解方式和xml配置掃包方式 而我們現在呢,使用...

自己對Java中 與equals比較的理解

首先我們先看三個例項結果 例項1 string s1 new string abc string s2 new string abc s1 s2 結果為false s1.equals s2 結果為true 例項2 object obj1 new object object obj2 new obje...

今天理解的一條程式設計規範 檢測變數的有效性

今天在android應用中完成一項遍歷資料夾的功能。方法引數為資料夾資料夾路徑。開始的 如下 private void recursivedir string root 檢測 檔案是否存在 if file.exists if file.isdirectory for int i 0 i subfil...