jdk環境: 1.8
方法: 使用javap -c 進行反彙編,來查看編譯器內部的工作。瞭解對象的創建過程。
在一條語句中使用+號:
由上圖可知,相當於字符串拼接被java轉換成了, new StringBuilder().append( a ).append("bc"); 這和使用StringBuilder中的append來添加字符串沒什麼區別
在多條語句中使用+號:
由上圖可知,在第一條拼接語句中,像第一次一樣,也是 new StringBuilder(),然後進行append。但是另起一條語句,使用+號進行拼接時,又重新new了一個StringBuilder對象進行拼接。如果多次這樣操作,肯定會創建大量無用的StringBuilder對象。
結論:
- 在一條語句中使用+號 和 直接使用append的效果是一樣的
- 在多條語句中使用+號,會創建大量無用的StringBuilder對象,此時應該使用append來拼接字符串