1. 程式人生 > >java 比較字串 “==”與equal的區別

java 比較字串 “==”與equal的區別

1. str1==str2  :判斷str1與str2是否同一個物件

public class TestString {
 
    public static void main(String[] args) {
 
        String str1 = "the light";
         
        String str2 = new String(str1);
         
        //==用於判斷是否是同一個字串物件
        System.out.println( str1  ==  str2);//輸出 false ;str1和str2的內容一樣,但不是同個物件。
    }
}

特例

一般說來,編譯器每碰到一個字串的字面值,就會建立一個新的物件
所以在第6行會建立了一個新的字串"the light"

但是在第7行,編譯器發現已經存在現成的"the light",那麼就直接拿來使用,而沒有進行重複建立

public class TestString {
 
    public static void main(String[] args) {
        String str1 = "the light";
        String str3 = "the light";
        System.out.println( str1  ==  str3);    //輸出 true
    }
}


2.str1.equals(str2):判斷str1與str2的內容是否相同

使用equals進行字串內容的比較,必須大小寫一致 
equalsIgnoreCase,忽略大小寫判斷內容是否一致

public class TestString {
  
    public static void main(String[] args) {
  
        String str1 = "the light";
          
        String str2 = new String(str1);
         
        String str3 = str1.toUpperCase();
 
        //==用於判斷是否是同一個字串物件
        System.out.println( str1  ==  str2);
         
        System.out.println(str1.equals(str2));//完全一樣返回true
         
        System.out.println(str1.equals(str3));//大小寫不一樣,返回false
        System.out.println(str1.equalsIgnoreCase(str3));//忽略大小寫的比較,返回true
         
    }
  
}