String 的 + 字符串拼接:
实际代码:
public class aaa {
public static void main(String[] args) {
String a = "abc";
a = a + "d";
}
}
编译器之后的等效代码:
public class aaa {
public static void main(String[] args) {
String a = "abc";
StringBuilder temp = new StringBuilder(a);
temp.append("d");
a = temp.toString();
}
}
可以看到String + 是先 new 一个 StringBuilder
所以循环字符串拼接时,String 的 + 操作每次都会 new 一个对象,非常耗时;
而StringBuilder 的 append 操作只须直接在字符数组后面添加即可