[天天一個知識點]15-Java語言-字符串鏈接

首發csdn,osc延遲更新java


昨天說了字符串拼接,今天來講說鏈接,我指的是非數組或集合類型的一堆內容拼一個字符串出來。數組

最簡單的是用+運算符,而後還有StringBuilder和StringBuffer。若是是培訓學校教的,通常都是說首選使用StringBuilder其次是StringBuffer,不要用+效率很低。實際上在大部分狀況下使用+已經足夠了,由於+實際上編譯以後就是StringBuilder(沒有StringBuilder的版本是StringBuffer),並且若是是2個字符串常量相加還能在編譯器合併成一個。ui

一種考慮手工建立StringBuilder的場景是在循環次數不少的循環中使用字符串鏈接,相似於這樣:spa

String result = "";  
  
for (int i = 0; i < 1_000_000; ++i) {  
    result += xxx;  
}

在這種場景下,第4行代碼在for循環每次循環執行時都會建立一個新的StringBuilder,在循環次數比較多的時候會有顯著的效率下降(好比在個人電腦上循環5000次執行時間就有數量級的差距)。這個效率的下降主要來源於+=而非建立StringBuilder對象,因此對於這樣:code

for (int i = 0; i < 1_000_000; ++i) {
    String result = xxx + yyy + zzz;
}

則沒有必要手工建立StringBuilder。可是當循環次數更加巨大,以致於須要考慮建立對象成本的時候就得考慮在循環外手工建立一個在循環內複用了。不過這種場景對新人來講應該是沒有機會遇到的,不用關心也可。orm

相關文章
相關標籤/搜索