String的"+"與StringBuffer效率問題

案例一

1.

    String s = "a" + "b" + "c";

2.

    String s = "";
    s += "a";
    s +="b";
    s +="c";
    3.
    StringBuilder result = new StringBuilder();
    result.append("a").append("b").append("c");
    String s = result.toString();

運行效率:2>3>1
分析:
1.因爲直接+,所以內存中每次需要new StringBuilder()對象,每次需要append()兩次生成新的字符串,然後調用toString方法複製給s。所以下來總共,3次創建StringBuilder,6次append,3次toString
2.編譯器直接對”+”優化,直接賦值
3.總共1次創建StringBuilder,3次append,1次toString

案例2

1)

    String s = "";
    s = s + "a" + "b";

2)

    String s = "";
    s += "a" + "b";

運行效率 2) > 1)
1)運行時創建1個StringBuilder對象,3次append(s,a,b各一次),一次toString調用
2)運行時,編譯器發現右側”+“,直接優化成 ab,然後與左側相加,所以 1次StringBuilder對象,2次append,1次toString

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