1. 程式人生 > 其它 >==與equals的區別

==與equals的區別

==比較的是兩個物件在記憶體中是不是同一個物件,也就是說比較的是記憶體中的地址是否相同。

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