常用的字符串拼接方式有五種,分別是使用+
、使用concat
、使用StringBuilder
、使用StringBuffer
以及使用StringUtils.join
。
用時從短到長的對比:StringBuilder < StringBuffer < concat < + < StringUtils.join
由於字符串拼接過程中會創建新的對象,所以如果要在一個循環體中進行字符串拼接,就要考慮內存問題和效率問題。
而“+”反編譯后的代碼,在for
循環中,每次都是new
了一個StringBuilder
,然后再把String
轉成StringBuilder
,再進行append
。
而頻繁的新建對象當然要耗費很多時間了,不僅僅會耗費時間,頻繁的創建對象,還會造成內存資源的浪費。
因此,經過對比發現,直接使用StringBuilder
的方式是效率最高的。因為StringBuilder
天生就是設計來定義可變字符串和字符串的變化操作的。
但是,還要強調的是:
1、如果不是在循環體中進行字符串拼接的話,直接使用+
就好了。
2、如果在並發場景中進行字符串拼接的話,要使用StringBuffer
來代替StringBuilder
。