Java基礎 - equals和==的區別

示例1:

    public static void main(String[] args) {
        String s1 = "test";
        String s2 = "test";
        if (s1 == s2)
            System.out.println("s1 == s2");
        else
            System.out.println("s1 != s2");
    }

結果:html

s1 == s2

示例2:

    public static void main(String[] args) {
        String s1 = "test";
        String s2 = new String("test");
        if (s1 == s2)
            System.out.println("s1 == s2");
        else
            System.out.println("s1 != s2");
        
        if(s1.equals(s2))
            System.out.println("s1 equals s2");
        else
            System.out.println("s1 is not equal to s2");
    }

結果:ios

s1 != s2
s1 equals s2

示例3:

    public static void main(String[] args) {
        String s1 = "test";
        String s2 = new String("test");
        
        s2 = s2.intern();
        
        if (s1 == s2)
            System.out.println("s1 == s2");
        else
            System.out.println("s1 != s2");

        if(s1.equals(s2))
            System.out.println("s1 equals s2");
        else
            System.out.println("s1 is not equal to s2");
    }

結果:spa

s1 == s2
s1 equals s2

結論:

  • 當使用 == 進行比較的時候,比較的是他們在內存中的存放地址。基本數據類型(byte,short,char,int,long,float,double,boolean)之間的比較應該用 ==。 
  • JAVA當中全部的類都是繼承於Object這個基類的。Object中定義了一個equals方法,這個方法的初始行爲是比較對象的內存地址(==),但在一些類庫當中這個方法被覆蓋掉了(如String,Integer,Date),用於比較值。

 

擴展:String的intern方法。code

相關文章
相關標籤/搜索