1 String str="abc"+"de";
2 StringBuilder stringBuilder=new StringBuilder().append("abc").append("de");
3 System.out.println(str);
4 System.out.println(stringBuilder.toString());
String的速度却比StringBuilder的反应速度要快么?
有的人说是快,有的人说一样快,到底时怎么样的呢?
2 StringBuilder stringBuilder=new StringBuilder().append("abc").append("de");
3 System.out.println(str);
4 System.out.println(stringBuilder.toString());
String的速度却比StringBuilder的反应速度要快么?
有的人说是快,有的人说一样快,到底时怎么样的呢?
StringBuffer是可变长度的字符串
StringBuilder是效率更高的可变长度的字符串
具体请见https://blog.csdn.net/yitian_66/article/details/79699174
但是在做循环的时候,使用+号做拼接,循环一次会创建一个StingBuffer对象。。所以在循环里使用要注意~
而StringBuilder比较适合未知次数的循环中字符串拼接。
StringBuilder中的内存空间会随调用调整,如果经常调整的话,性能也不会很好,
因此如果一开始设定一个较大空间数,也可以提升性能。
String str="abc"+"de";
StringBuilder stringBuilder=new StringBuilder().append("abc").append("de");
我说的是对加号操作的内置优化,你怎么扯到stringBuilder自身了
这跟IDE没半毛钱关系,JDK支持就支持,不支持就不支持!
IDE编译也是调用JDK的编译器而已!
我说的是对加号操作的内置优化,你怎么扯到stringBuilder自身了
看最后一句,07年出的书上面已经说明了这个优化。而那时候还没有1.8
恩 但是我只看过第三版,这里没说明
当然如果你用户就那么几个,效率要求不高的话String也行。
今天看了下书,在编译期确实从1.5开始进行优化,编译过程使用StringBuilder,我一定是被infoq上的一篇文章蒙骗了,书上还说虽然拼接在编译过程使用StringBuilder但是它是在循环内创建所以 还是推荐StringBuilder
又有一篇文章提出了大体量下+和StringBuilder的性能 https://www.cnblogs.com/edhn/p/3289879.html所以目前 大方向推荐使用StringBuilder,最终都是编译好的才发布,垃圾会回收,写代码想咋写咋写。
参考
https://www.quora.com/How-do-I-add-two-strings-in-Java-using-the-+-operator-for-runtime-input
StringBuffer是可变长度的字符串
StringBuffer效率高