JAVA为什么不建议在for循环中使用"+"进行字符串拼接,而是建议使用StringBuilder 的 append 方法?idea提示string concatenation ‘+=’in loop
以代码来讲解
String str="";
for(int i=0;i<10;i++){
str+="a";
}
str=str+"a"+"b";
使用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
结论:
- 如果不是在循环体中进行字符串拼接的话,直接使用+就好了。
- 如果在并发场景中进行字符串拼接的话,要使用StringBuffer来代替StringBuilder。
大家好,我是[爱做梦的子浩](https://blog.csdn.net/weixin_43124279),我是东北大学大数据实验班大三的小菜鸡,非常向往优秀,羡慕优秀的人,已拿两个暑假offer,欢迎大家找我进行交流😂😂😂
这是我的博客地址:[子浩的博客https://blog.csdn.net/weixin_43124279]
——
版权声明:本文为CSDN博主「爱做梦的子浩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。