面試官:爲啥不提倡字符串拼接?看阿里java開發手冊告訴你答案

阿里規約

先來看阿里java開發手冊的第22條,循環體內,字符串的連接方式,使用 StringBuilder 的 append 方法進行擴展。

說明:下例中,反編譯出的字節碼文件顯示每次循環都會 new 出一個 StringBuilder 對象,然後進行 append操作,最後通過 toString 方法返回 String 對象,造成內存資源浪費。

反例:

String str = "start";
for (int i = 0; i < 100; i++) {
   str = str + "hello";
}

反編譯

我麼先寫一個類測試一下是否是這樣的呢?眼見爲實,耳聽爲虛,Let`s go。

反編譯  javap  -c Test.class ,接下來看結果,從反編譯的結果看循環體內每拼接一次就會去new一個StringBuilder。

那麼,m2方法的字節碼呢?我們可以看到是直接調用的append方法,而沒有每循環一次new一個StringBuilder對象了。

總結

1、字符串拼接,+號和StringBuilder是相等的,但是在循環體內使用 StringBuilder 的 append 方法效率更優,尤其是數據量很大的情況下。

2、使用字節碼的方式可以很好查看代碼底層的執行,從而可以看出哪些實現效率高,哪些實現效率低。可以更好的對我們的代碼做優化。讓程序執行效率更高。

 

關注我,並後臺回覆關鍵字【手冊】獲取最新的阿里java開發手冊【泰山版】

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章