1. 程式人生 > >為什麼不建議在for迴圈中使用"+"進行字串拼接

為什麼不建議在for迴圈中使用"+"進行字串拼接

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

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

由於字串拼接過程中會建立新的物件,所以如果要在一個迴圈體中進行字串拼接,就要考慮記憶體問題和效率問題。

而“+”反編譯後的程式碼,在for迴圈中,每次都是new了一個StringBuilder,然後再把String轉成StringBuilder,再進行append

而頻繁的新建物件當然要耗費很多時間了,不僅僅會耗費時間,頻繁的建立物件,還會造成記憶體資源的浪費。

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

但是,還要強調的是:

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

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