內容一(使用==比較):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()的定義為
我們可以看到,它返回時是使用的比較的,所以object類中定義的equals()和 的作用是相同的,比較兩個物件的位址值是否相同public
boolean
equals
(object obj)
而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 都是...