為什么不建議在for循環中使用"+"進行字符串拼接


常用的字符串拼接方式有五種,分別是使用+、使用concat、使用StringBuilder、使用StringBuffer以及使用StringUtils.join

用時從短到長的對比:StringBuilder < StringBuffer < concat < + < StringUtils.join

由於字符串拼接過程中會創建新的對象,所以如果要在一個循環體中進行字符串拼接,就要考慮內存問題和效率問題。

而“+”反編譯后的代碼,在for循環中,每次都是new了一個StringBuilder,然后再把String轉成StringBuilder,再進行append

而頻繁的新建對象當然要耗費很多時間了,不僅僅會耗費時間,頻繁的創建對象,還會造成內存資源的浪費。

因此,經過對比發現,直接使用StringBuilder的方式是效率最高的。因為StringBuilder天生就是設計來定義可變字符串和字符串的變化操作的。

但是,還要強調的是:

1、如果不是在循環體中進行字符串拼接的話,直接使用+就好了。

2、如果在並發場景中進行字符串拼接的話,要使用StringBuffer來代替StringBuilder


免責聲明!

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



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