【讀阿里規約有感】循環體內的字符串連接時,使用StringBuilder的append()和+String的方式比較


阿里規約里原話是:

【推薦】循環體內,字符串的連接方式,請使用 StringBuilder 的 append 方法進行擴展。(而不要用+String的方式)
說明:因為反編譯出的字節碼文件顯示每次循環都會 new 出一個 StringBuilder 對象,然后進行
append 操作,最后通過 toString 方法返回 String 對象,造成內存資源浪費。

從這句話得知,用StringBuilder連接字符串比 + 的方式好,因為更少占用內存資源。可是我們怎么才能更加直觀的看到性能對比呢?

這時我想到了時間開銷對比,我推測前者的運行時間比后者少,於是有了下面的測試代碼

@Test
public void mainTest1(){
long startTime1 = System.currentTimeMillis();
StringBuilder str1 = new StringBuilder("start");
for (int i = 0;i < 100000; i++){
str1.append(i);
}
long endTime1 = System.currentTimeMillis();
long time1 = endTime1 - startTime1;
System.out.println("StringBuilder所花時間:" + time1);
String str2 = "start";
long startTime2 = System.currentTimeMillis();
for (int i = 0;i < 100000; i++){
str2 = str2 + i;
}
long endTime2 = System.currentTimeMillis();
long time2 = endTime2 - startTime2;
System.out.println("String++所花時間:" + time2);

}
------------------------------------------------------

StringBuilder所花時間:8
String++所花時間:11866

----------------------------------------------------------------------------------------------------------

顯而易見。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM