Java 解惑 equals 與 的區別

2021-08-11 02:48:49 字數 767 閱讀 3330

對這個問題,如果要回答的全面的話,我們應該這麼講:

當參與==比較的兩個元素中有乙個是值型別的,那麼就按照值型別來比較。而引用型別按照值來比較的時候使用的是它們的hashcode()的返回結果。只有當參與比較的兩個元素都是引用型別的,那麼才按照引用型別來比較,即比較它們的hashcode()的返回結果。

當使用equals()方法進行比較的時候,實際的比較結果取決於equals()方法的具體實現,在 object 的預設實現中,是使用==來實現的。也就是說使用了按引用來比較的方式。不過,比如 integer 和 string 等,它們在自己的類中又實現了該方法,而它們實現該方法的時候是按照值來進行比較的。

另外就是關於覆寫equals()hashcode()方法的問題,覆寫它們要遵循一定的原則,不過這些工作完全可以由 idea 代勞。

驗證**

public

static

void

main

(string.

..args)

private

static

class

myobj

}

輸出結果:

true

false

true

false

false

java 與equals的區別

號比較引用型別比較的是位址值是否相同 equals 比較引用型別預設也是比較位址值是否相同,而string類重寫了equals 方法,比較的是內容是否相同。package name public class text02 執行結果為 false true true true 字串如果是變數相加,先開...

java 「 」與 equals()的異同

通俗的講,是看看左右是不是乙個東西。equals是看看左右是不是長得一樣。等於,equals 相同。兩個長得一樣的人,只能說長的相同 equals 但是不等於他們倆是乙個人。你只要記住equals,就不用記了。理論的講,1.是判斷兩個變數或例項是不是指向同乙個記憶體空間 2 equals是判斷兩個變...

java中equals 與 的區別

public class teststring 這個程式真是簡單啊!可是有什麼問題呢?1.來自 string 的憂慮 上面這段程式中,到底有幾個物件呢?可能很多人脫口而出 兩個,s1 和 s2 為什麼?string 是 final 類,它的值不可變。看起來似乎很有道理,那麼來檢測一下吧,稍微改動一下...