String/StringBuffer/StringBuilder区别

String是不可改变的对象。
每次改变其实都是创建了一个新的对象,然后将指针指向新的String对象,所以经常改变内容的字符串尽量不要用String,
因为每次都会生成新的对象,对系统性能有影响。
String s ="A"+"B"+"C";
速度非常快,因为JVM认识这个语句。在编译期间就把他看成来了 String s ="ABC"
而 String s1 ="A"     String s2 ="B"     String s3 ="C"
    String s =s1+s2+s3 则没有了速度优势。
StringBuffer是(线程安全的)可以改变的对象,一般来讲速度稍快于String对象。
.append()在结尾加上字符串
 StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
.insert()在指定角标加字符串
例如,如果 z 引用一个当前内容是“start”的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含“startle”,而 z.insert(4, "le") 将更改字符串缓冲区,使之包含“starlet”
StringBuilder是(线程不安全的)可改变的对象,提供与StringBuffer兼容的API,单线程推荐使用,速度比StringBuffer快。

原文地址:https://www.cnblogs.com/xiejiusi/p/7743625.html