String中字符串相加,如何判斷是否產生新的對象

這個問題使用一個實例,就能很好地方便我們記憶

public class StringTest {

    /**
     * @Author Loujitao
     * @Date 2018/6/21
     * @Time  11:10
     * @Description:
     * 提示:如果有對象參與相加,編譯器沒法處理,結果爲新的對象
     *       字符串常量直接相加,會先經過編譯器處理;
     *       且常量使用過就是一個對象,下次使用不產生新對象。
     */
    public static void main(String[] args) {
        String a="1";
        String b="";
      
        String str1=a+b;                //產生新對象
        String str2=a+b;                //產生新對象
        String str3="1"+b;              //有變量參與計算,產生新對象 
        String str4="1"+"";             //編譯器自動優化 <==> String str4="1"; "1"常量字符串已被a引用過
        String str5="1"+"";             //同上  

        System.out.println(str1==str2);
        System.out.println(str1==str3);
        System.out.println(str1==str4);

        System.out.println(str2==str3);
        System.out.println(str2==str4);

        System.out.println(str3==str4);

        System.out.println(str4==str5); 
        System.out.println(a==str5);

/** 結果顯示爲:
              false
              false
              false
              false
              false
              false
              true
              true
*/
    }
}   
    

       

發佈了76 篇原創文章 · 獲贊 46 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章