一個小問題,分享給大家。
+ 操作和 StringBuilder 都能連接字符串,使用+來拼接字符串,使用javap命令來反編譯代碼,可以看出實際上編譯器會自動創建StringBuilder,調用它的append方法來拼接字符串。+ 的優勢在於:語法簡單,容易書寫。缺點是:對於動態生成且合並次數過多的字符串,優化不足,需要反復申請內存。StringBuilder 的優勢在於:能夠預先分配內存,對於需要進行多次拼接的字符串,優化了拼接時的內存和時間的消耗。缺點是:書寫復雜,對於較簡單且確定的字符串,運行效率反而比 + 差。
如果在一個for循環語句中,循環100次,使用+來拼接字符串的話,就會創建100次StringBuilder對象,這樣就很消耗內存,所以,在進行復雜字符串拼接的時候,還是建議使用StringBuilder來拼接字符串,就算循環1000次,也只是創建一次StringBuilder對象。
你可以這么理解:絕大多數情況下,如果字符串拼接在循環中(也就是需要反復進行),則偏向於使用 StringBuilder ,而只是常規的拼接,則使用 + 即可。另外,如果需要在多個方法間傳遞字符串進行組裝,則傳遞 StringBuilder 比較合適。
