Java之路 與equals 的區別

2021-09-03 01:47:36 字數 1693 閱讀 5320

【示例1】

public

class

equal

}

【結果】

(1)對於基本資料型別的變數,變數儲存的是值「本身」。而所有關係運算子比較的就是值「本身」,而

int m =3;

int n =

3;

變數n和變數m都是直接儲存的"3"這個數值,所以用==比較的時候結果是true。

(2)對於引用型別變數,引用型別的變數儲存的並不是 「值」本身,而是於其關聯的物件在記憶體中的位址。

如:

integer n1 =

newinteger(47

);integer n2 =

newinteger(47

);

引用型別變數n1中儲存的是他所指向的物件在記憶體中的位址,而不是47這個值,同理,n2也是如此。

system.out.

println

(n1 == n2)

;

當執行上面語句時,實際上比較的是n1和n2的引用(其指向的物件在記憶體中的位址)。然而,n1和n2物件的引用卻是不同的,所以輸出false。

equals方法是基類object中的方法,因此對於所有的繼承於object的類都會有該方法。equals()方法是用來比較兩個物件的引用是否相等,即是否指向同乙個物件。但equals()這個方法不適用於基本資料型別,基本型別直接使用==和!=即可。

public

class

equal

}

【結果】

【結果分析】

不是說equals()比較的是引用嘛,那上面結果為什麼對呢?這是因為:

equals()預設確實是比較引用,但是integer類中重寫了equals()方法,使其比較引用物件的內容。

兩個引用物件的內容都是47,所以結果是true。

假設你建立了自己的類,沒有重寫equals()方法,如下:

public

class

equal

}

【結果】

【結果分析】

這是由於equals()的預設行為是比較引用,沒有重寫equals()方法,所以它無法比較引用物件的內容,只能預設比較物件的引用,引用不同,所以結果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 類,它的值不可變。看起來似乎很有道理,那麼來檢測一下吧,稍微改動一下...