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

使用jad反编译以后

jad使用指南

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。
而频繁的新建对象当然要耗费很多时间了,不仅仅会耗费时间,频繁的创建对象,还会造成内存资源的浪费。
我为什么在for循环外写str=str+"a"+"b";,是为了告诉大家,不是一个”+“就创建一个StringBuilder

结论:

  1. 如果不是在循环体中进行字符串拼接的话,直接使用+就好了。
  2. 如果在并发场景中进行字符串拼接的话,要使用StringBuffer来代替StringBuilder。

相关文章:

  • 2022-12-23
  • 2021-05-16
  • 2022-12-23
  • 2022-01-08
  • 2021-08-04
  • 2021-09-25
  • 2022-12-23
  • 2021-05-19
猜你喜欢
  • 2022-02-11
  • 2021-05-01
  • 2021-12-18
  • 2022-12-23
  • 2022-12-23
  • 2022-01-05
相关资源
相似解决方案