Java-29为什么不建议在for循环中用‘+’进行字符串拼接?

String类是不可变的,在for循环中每次用’+'进行 字符串拼接都会new一个新的对象,而且会耗费大量时间与内存

String str="";
for(int i=0;i<10;i++){
	str+="a";
}
str=str+"a"+"b";

反编译后的代码:

String str = "";
for(int i = 0; i < 10; i++)
	str = (new StringBuilder()).append(str).append("a").toString();
str = (new StringBuilder()).append(str).append("a").append("b").toString();

我们可以看到,反编译后的代码,在for循环中,每次都是new了一个StringBuilder,然后再把String转成StringBuilder,再进行append。
而频繁的新建对象当然要耗费很多时间了,不仅仅会耗费时间,频繁的创建对象,还会造成内存资源的浪费。

Java-29为什么不建议在for循环中用‘+’进行字符串拼接?

上一篇:java HttpClient调用wsdl协议


下一篇:Map 下的 NPE