1. 程式人生 >實用技巧 >其它 >“==“與“equals“的區別

“==“與“equals“的區別


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("s1==s5:"+(s1==s5));
        System.out.println("s1==s2:"+(s1==s2));
        System.out.println("s1.equals(s2):"+s1.equals(s2));
        System.out.println("s3==s4:"+(s3==s4));
        System.out.println("s3.equals(s4):"+s3.equals(s4));
    }
}

結果:

“==“與“equals“的區別


==
"= ="比較2個物件在記憶體裡是不是同一個物件,就是說在記憶體裡的儲存位置一致。
拿2個String物件舉例,2個String物件儲存的值是一樣的,但2者可能儲存在記憶體中的不同的地方。

equals
“= =“比較的是"引用"而"equals方法"比較的是"內容”。public boolean equals(Object obj) 此方法由Object物件提供,可以由子類進行重寫。預設的實現只有當物件和自身進行比較時才會返回true,這個時候和”= ="等價。String,BitSet,Date和File都對equals方法進行了重寫,對2個String物件而言,值相等意味著它們包含同樣的字元序列。對於基本型別的包裝類來說,值相等意味著對應的基本型別的值一樣。