StringBuffer是线程安全的
StringBuilder是非线程安全的
StringBuffer对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。
效率比较String<StringBuffer<StringBuilder,但是在 String S1 = “This is only a” + “ simple” + “ test”时,String效率最高。
总结:
StringBuiler>StringBuffer>String
StringBuffer:字符串变量,是线程安全的
StringBuilder:字符串变量,非线程安全的
1 String s = "abcd"; 2 s = s+e; 3 System.out.print(s);// result : abcde这里的结果虽然变成了abcde,但是此时的s已经不再是第一行中的s,因为String是常量,所以对于第二行的代码,虚拟机会重新生成一个新的对象s,并且清楚原先的对象s。
都知道的是StringBuffer是线程安全的,stringBuilder是非线程安全的。并且有上述可知,String的效率是非常慢的。所以从执行效率上来看String<StringBuffer<StringBuilder.
StringBuffer对String类型转换的时候,是用的append()方法,这种方法并不是创建一个新的String对象,所以C是错的。
1.String:字符串常量,字符长度不可变
2.StringBuffer(JDK1.0):(synchronize线程安全)字符串变量
Java.lang.StringBuffer线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。
主要操作有append和insert方法
3.StringBuilder(JDK5.0):(非线程安全)字符串常量