以下为字符串+的示例 :
public void test(){ String str = ""; for(int i=0;i<100;i++){ str +=i; } }
反编译后(jad反编译工具):
public void test() { String str = ""; for(int i = 0; i < 100; i++) str = (new StringBuilder()).append(str).append(i).toString(); }
可见java编译时把+ 替换为StringBuilder实现。
但存在问题,由于循环所以构建了100个StringBuilder对象。
改正为:
public void test(){ String str = ""; StringBuilder stringBuilder = new StringBuilder(); for(int i=0;i<100;i++){ stringBuilder.append(i); } str = stringBuilder.toString(); }
使用一个StringBuilder即可。
建议:多次字符串+操作的时候,使用StringBuilder 替代。