來這能知道equals 方法和 的區別

2021-10-24 01:36:45 字數 1203 閱讀 5009

public

static

void

main

(string[

] args)

內容一(使用==比較):

a,b,c都是基本資料型別

如果比較的是基本資料型別變數,那麼比較的是這兩個變數儲存的資料是否相同。(不一定型別要相同,因為有自動型別提公升)

內容二(使用==比較):

s1,s2,s3都是引用資料型別

如果比較的是引用資料型別變數,比較兩個物件的位址值是否相同

內容三(使用==比較)

p1,p2,p3也是引用資料型別,和內容二一樣,比較物件的位址值是否相同

內容四與內容五都使用equals()方法比較

他們都是引用資料型別

system.out.println(s1.equals(s2));//true

system.out.println(s1.equals(s3));//false

system.out.println(p1.equals(p2));//false

system.out.println(p1.equals(p3));//false

看到這你會有s1與s2內容相同,使用equals()方法結果為"true",p1與p2內容也相同,為什麼使用equals()方法結果為"false"???

因為p1,p2的equals()方法是屬於object類的,而object類中equals()的定義為

public

boolean

equals

(object obj)

我們可以看到,它返回時是使用的比較的,所以object類中定義的equals()和 的作用是相同的,比較兩個物件的位址值是否相同

而s1,s2的equals()方法是屬於string類中的,因為string類重寫了object類中的equals()方法,所以比較的就不是位址值了,而是s1與s2之間的內容

所以我們自定義的類要使用equals()方法時,需要進行重寫object類中的equals(),從而比較兩個物件的內容是否相同

如何重寫equals()方法

equals()方法只能適用於引用資料型別

我知道的 和equals的區別

package jihe 和equals的區別 author 趙中傑 比較的是兩個物件的位址 equals比較的是兩個物件的內容 public class test 同位址同內容 public void test1 else if st1.equals st2 else system.out.pri...

equals方法和 的比較

我想應該有和我遇到一樣問題的,equals 和 到底什麼區別呢?繼承object中的equals public boolean equals object obj return this obj string 型別重新object中的equals public boolean equals obje...

和 equals 方法的區別

public static void main string args 結果 public static void main string args 結果 結果 結果 是乙個關係運算子,使用與所有內建的資料型別,同樣也適用於所有物件,檢查兩個物件是否相等。1中,a b 返回true。因為a b 都是...