和equals本質的區別

2021-08-21 07:53:42 字數 859 閱讀 5219

我們知道equals是object的方法,那我們先看看在object這個類中是如何定義的:

public

boolean

equals(object obj)

顯然意見,在object類中的equls方法其實也是用==來判斷兩個物件是否相等。

但是看下面這段**:

@test

public

void testequal()

輸出結果是false和ture,這是因為在string類中對object的equals方法實現了覆蓋,原始碼如下:

public boolean equals(object anobject) 

if (anobject instanceof string)

return

true;}}

return

false;

}

可見equals的功能其實是由我們自己決定的,如果是我們自己定義的物件又該如何判斷值的相等呢?示例如下:

class myobjectelse

if(o instanceof myobject)

}return

false;}}

@test

public

void

test1()

輸出結果為true結論:

equals和==的本質區別在於前者是方法,後者是操作符,我們可以自定義equals的行為,卻無法定義==的行為,於其說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都是比較...