java之equals 與 的區別

2021-09-05 09:26:57 字數 1172 閱讀 4967

== :

2.判斷引用所指的物件是否是同乙個。

3.兩邊的運算元必須是同一型別的(可父子類)才能編譯通過。

4.值型別(int,char,long,boolean等)都是用==判斷相等性。

equals:

1. 本質:比較的是兩個物件之間的內容

2. equals是object的成員函式,有一些類覆蓋(override)了這個方法,用於判斷物件的等價性。如果沒有進行覆蓋的話,呼叫的就是object類中的方法,檢視object原始碼:

public boolean equals(object obj)
可知,如果不重寫equals方法的話,其作用與 == 完全相同。

但是,有一些類會覆蓋重寫object中的equals方法,如:像string、integer等類,對equals進行了重寫

public boolean equals(object anobject) 

if (anobject instanceof string)

return true;}}

return false;

}

對equals重寫需要注意五點:

1   自反性:對任意引用值x,x.equals(x)的返回值一定為true;

2   對稱性:對於任何引用值x,y,當且僅當y.equals(x)返回值為true時,x.equals(y)的返回值一定為true;

3   傳遞性:如果x.equals(y)=true, y.equals(z)=true,則x.equals(z)=true ;

4   一致性:如果參與比較的物件沒任何改變,則物件比較的結果也不應該有任何改變;

5   非空性:任何非空的引用值x,x.equals(null)的返回值一定為false 。

string類,兩個引用所指向的string都是」abc」,但可能出現他們實際對應的物件並不是同乙個(和jvm實現方式有關),因此用==判斷他們可能不相等(因為所建立的物件可能位址不同),但用equals判斷一定是相等的(因為他們所表示的內容是一樣的)。

public class test1 

}}

java 與equals的區別

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

java必懂之 與equals的區別

屁話不多說,直接上 equals和關係運算子 的區別 author 劉威辰的 1 用在基本資料型別boolean a b 2 判斷引用是否指向同乙個位址且內容是否相同 equals 1 用於判斷兩個變數是否對同乙個物件的引用,即判斷內容是否相同,不會判斷位址 2 string型別比較常用 判斷物件的...

java中equals()與 區別

int a 10 int b 10 則a b將是true。但不好理解的地方是 string a new string foo string b new string foo 則a b將返回false。物件變數其實是乙個引用,它們的值是指向物件所在的記憶體位址,而不是物件本身。a和b都使用了new操作...