和 equals 的區別

2021-10-05 22:14:40 字數 1303 閱讀 9479

通俗點講,==是看看左右是不是乙個東西。equals是看看左右是不是長得一樣。

如何記住嘛。如果單純是想記住,

==:等於。

equals:相同。

兩個長得一樣的人,只能說長的相同(equals),但是不等於他們倆是乙個人。你只要記住equals,==就不用記了。

術語來講的區別:

1.==是判斷兩個變數或例項是不是指向同乙個記憶體空間

equals是判斷兩個變數或例項所指向的記憶體空間的值是不是相同

2.==是指對記憶體位址進行比較

equals()是對字串的內容進行比較

3.==指引用是否相同

equals()指的是值是否相同

比較物件不同,也是不一樣的。

1.如果比較物件是值變數:只用==,equals()是不存在的。

為毛?通俗點講呢,equals()是個函式啊親,因為基本型別int float不是物件,根本就沒有函式啊摔。再通俗點,int. equals(),這個寫法你感受一下。。

2.如果比較物件是引用型變數:就是我上面說的那個情況了。

equals的實現就是直接呼叫了==操作

public boolean equals(object obj)
所以如果這個時候你自定義了乙個類,僅僅繼承自object且沒有重寫equals方法,那麼其equals操作也是與object類一樣,僅僅是直接呼叫==操作。

這個時候他倆沒啥區別。當然這是廢話,尼瑪equals裡面這時候本來就用的==,能不一樣麼摔。

這麼說吧,這時候比較自定義類用equals和==是一樣一樣的,因為這個時候尼瑪都是比較控制代碼位址, 自定義的類是繼承於object,而object中的equals就是用==來實現的。參見上面那條。

如果乙個類重寫過equals方法(或者繼承自乙個重寫過equals方法的類,那麼效果與==操作就不一樣了。這裡參見最開始的回答。

另外,那啥,再加一句,instanceof 也是個好東西哇。你可以用他檢查引用型變數是否屬於某乙個class:那啥,返回的也是true 或者false,跟c#裡的is差不多的說。

例如string重寫的equals方法。如下所示

public boolean equals(object anobject) 

if (anobject instanceof string)

return true;}}

return false;

}

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都是比較...