Java中String通过"+"进行字符串拼接,但是这个如何实现的呢
public class StringAppend {
public static void main(String[] args) {
String name = "World";
System.out.println("Hello " + name);
}
}
参照如上的一段代码进行Hello World打印,使用如下命令查看编译的结果
javap verbose StringAppend.class
根据编译结果右侧红框标出的结果来看,String + 的字符串拼接,会转而变成构造一个StringBuilder对象,然后通过append方法拼接余下的内容。
阿里巴巴开发手册中说明在for循环中不要使用String + 操作,而推荐使用StringBuilder,多线程则可以使用StringBuffer。
为什么呢,参照编译结果可以得出:在循环中使用String+操作,会进行大量的StringBuilder对象创建,会造成大量的内存分配回收工作,从而造成性能的损耗。