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)); } }

結果:
在這裡插入圖片描述
==
"= ="比較2個物件在記憶體裡是不是同一個物件,就是說在記憶體裡的儲存位置一致。

拿2個String物件舉例,2個String物件儲存的值是一樣的,但2者可能儲存在記憶體中的不同的地方。

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