(二)equals 和 的區別

2021-10-06 08:25:30 字數 723 閱讀 8107

在說這個以前我們首先要知道。棧和堆分別是什麼?當我們在宣告乙個物件的時候,比如說宣告變數 string s = 「a」。那這個時候,s它是變數,它是放在棧中的,然後這個a是字串它是乙個值,它是放在堆中的,也就是說變數放在棧中。物件或者說值是放在堆中。

然後他們倆的區別就是,== 等於比較的是物件。然後再說 equals ,實際上,equals是object類的方法,所以它適用於所有的物件。如果這個方法沒有被覆蓋的話,j就仍然是走 object 類中的方法,而 object 類裡面的equals方法其實。其實就是 == 。也就是說,在不覆蓋的情況下,equals 和 == 他們兩個是一致的。但是呢?在有些時候,比如說像string integer。他們對於 equals 進行了重寫。

然後我們再看乙個問題

string a = "a"

string b = new string(「b」)

這兩個有什麼區別?

這裡面主要涉及到了乙個常量池的問題。常量池就是在我們宣告乙個常量的時候。那他是乙個什麼動作呢?第一種string a = string。他其實在宣告的時候,會先去看常量池裡面有沒有 「a」 這個值,如果有的話,會直接指向他,比如說我們執行第三句,string c = 「a」。這個時候其實不會重新建立乙個 「a」 ,而是直接會指向之前的那個 "a" ,也就是說 c 和 a 。他們的值其實是一樣的。然後我們在看 string b = new string(「b」),這種情況不管你在常量池中有沒有被宣告都會重新建立乙個新的物件。

Equals 和 的區別

對於值型別,如果物件的值相等,則相等運算子 返回 true,否則返回 false。對於string 以外的引用型別,如果兩個物件引用同乙個物件,則 返回 true。對於 string 型別,比較字串的值。操作比較的是兩個變數的值是否相等。equals 方法比較的是兩個物件的內容是否一致 equals...

equals 和 的區別

equals 方法 是string類從它的超類object中繼承的 被用來檢測兩個物件是否相等,即兩個物件的內容是否相等。用於比較引用 和 比較基本資料型別時具有不同的功能 1.比較基本資料型別,如果兩個值相同,則結果為true 2.而在比較引用時,如果引用指向記憶體中的同一物件,結果為true s...

和equals的區別

和 equals 的區別 1.是乙個運算子。2.equals則是string物件的方法,可以.點 出來。我們比較無非就是這兩種 1 基本資料型別比較 2 引用物件比較 1 基本資料型別比較 和equals都比較兩個值是否相等。相等為true 否則為false 2 引用物件比較 和equals都是比較...