1 回答

TA貢獻1843條經(jīng)驗 獲得超7個贊
使用+來拼接字符串,使用javap命令來反編譯代碼,可以看出實際上編譯器會自動創(chuàng)建StringBuilder,調(diào)用它的append方法來拼接字符串。
如果在一個for循環(huán)語句中,循環(huán)100次,使用+來拼接字符串的話,就會創(chuàng)建100次StringBuilder
對象,這樣就很消耗內(nèi)存,所以,在進行復(fù)雜字符串拼接的時候,還是建議使用StringBuilder
來拼接字符串,就算循環(huán)1000次,也只是創(chuàng)建一次StringBuilder
對象。

TA貢獻1797條經(jīng)驗 獲得超6個贊
+
操作和 StringBuilder
都能連接字符串,+
的優(yōu)勢在于:語法簡單,容易書寫。缺點是:對于動態(tài)生成且合并次數(shù)過多的字符串,優(yōu)化不足,需要反復(fù)申請內(nèi)存。StringBuilder
的優(yōu)勢在于:能夠預(yù)先分配內(nèi)存,對于需要進行多次拼接的字符串,優(yōu)化了拼接時的內(nèi)存和時間的消耗。缺點是:書寫復(fù)雜,對于較簡單且確定的字符串,運行效率反而比 +
差。
你可以這么理解:絕大多數(shù)情況下,如果字符串拼接在循環(huán)中(也就是需要反復(fù)進行),則偏向于使用 StringBuilder
,而只是常規(guī)的拼接,則使用 +
即可。另外,如果需要在多個方法間傳遞字符串進行組裝,則傳遞 StringBuilder
比較合適。
添加回答
舉報