==與equals的區別
阿新 • • 發佈:2022-04-07
==
比較的是兩個物件在記憶體中是不是同一個物件,也就是說比較的是記憶體中的地址是否相同。
equals比較的是兩個物件中的內容是否相同。public boolean equals(Object object)
這個方法是由Object物件提供,子類可以重寫。預設的實現是隻有當物件和自身比較時才會返回true
,這個時候和 ==
是等價的。String、BitSet、Date、File
都對equals
進行了重寫,對於兩個String
物件而言,值相等意味著他們包含相同的字元序列。對於基本資料型別的包裝類來說,值相等意味著對應的基本資料型別的值也相等。
例如以下程式碼:
public class Test { public static void main(String[] args) { String s1 = "abc"; String s2 = s1; String s3 = new String("abc"); String s4 = new String("abc"); String s5 = "abc"; System.out.println("== comparsion:" + (s1 == s5)); System.out.println("== comparsion:" + (s1 == s2)); System.out.println("equals:" + s1.equals(s2)); System.out.println("== comparsion:" + (s3 == s4)); System.out.println("equals:" + s3.equals(s4)); } }
結果
== comparsion: true
== comparsion: true
equals: true
== comparsion: false
equals:true