關於 和equals的問題

2022-09-21 01:12:13 字數 347 閱讀 3713

首先equals沒有重寫的話和==是沒有區別的。如果是基本資料型別使用==,則判斷的是值是否相等,如果是引用型別使用==,則判斷的是位址是否相等。

通常犯的錯誤就是字串的equals和==的比較,因為equals的底層是實現了重寫的,所以與==就有區別了,其中equals比較的是內容,==比較的是引用型別的位址。

string a = "abc"; 是從常量池獲取,string b = new string("abc");是從堆記憶體中new出來乙個引用物件。所以自然a==b返回的是flase,a.equals(b)返回的是true。

如果string c = b,本質就是把b的引用位址值傳遞給了c,所以c==b返回的是true。

關於equals和「 」的詳解

首先,equals,equals最常用的是在string下呼叫,用來比較兩個字串是否相同。但實際上equals是object中的方法,string對其進行了覆寫。object中的equals方法是用來比較兩個物件相等的,但是其預設的是按位址進行比較 並不能對內容進行比較。string覆寫了此方法用來...

關於 和equals的區別

1 對於字串變數來說,使用 和 equals 方法比較字串時,其比較方法不同。比較兩個變數本身的值,即兩個物件在記憶體中的首位址。equals 比較字串中所包含的內容是否相同。2 對於非字串變數來說,和 equals 方法的作用是相同的都是用來比較其 物件在堆記憶體的首位址,即用來比較兩個引用變數是...

關於 和equals的探索

在我的概念之中,在對比兩個基本資料型別的時候,對比的是兩者的值是否相同。而在對比兩個引用資料型別的時候,比較的是兩者的記憶體位址是否相同。而equals方法,我一直認為這個方法是對比兩個引用資料型別的值是否相同的。但是,今天看到有人說,equals想要比較兩個引用資料型別的內容是否一致,需要重寫。因...