equals 和 的區別

2022-07-16 00:09:10 字數 1181 閱讀 5720

首先"=="是關係運算子,equals()是方法。但是同時他們的結果都返回布林值;

我們首先思考一下什麼時候經常用到"=="?

①基本型別資料做比較

②string(特殊的引用型別做比較)

1、「==」的比較

public static void main(string args)
針對於string型別我們要考慮到乙個常量池的概念,由於string預設是由final修飾的,string型別的物件預設都存放在常量池中。

①string s1="1"相當於建立了乙個物件,其實s1建立的時候它會先呼叫string的equals()方法判斷常量池中是否有該物件,如果沒有就建立物件;如果有就會返回該物件的引用。

②s4和s5相等是因為string是常量,s5="1"+"1"在編譯期間就已經確定了,s5="1"+"1"編譯後的結果相當於s5="11"。

③對於其它的+號連線物件而產生的物件都不會加入到常量池中,相當於建立了乙個新物件,比較位址後當然返回的為false了。

2、equals()的比較

equals用於string型別和物件引用型別的比較。

為什麼把string型別和物件型別分開來講,因為string型別是特殊的引用型別。

原始碼分析

2.1string類中的equals方法(string型別是object的子類,它預設重寫了equals方法):

public boolean equals(object anobject) 

if (anobject instanceof string)

return true;}}

return false;

}

原始碼很直觀,乙個string型別變數和另乙個物件的變數做比較(另乙個物件可以是stirng型別,也可以是任意類),當兩個變數的位址相同直接返回true,不同時走下一步,另乙個物件強轉為string型別,兩個變數的字元一 一比較。

2.2自定義類中的equals方法,如:

a aa  = new a();

b bb = new b();

aa.equals(bb);

public boolean equals(object obj)
aa呼叫的是object類的equals方法,是對位址的比較。

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