区别
1.可变性
String是字符串常量,由final修饰,具有不可变性,Stringbuffer,StringBuilder是字符串变量,是可变的,是一个字符可变序列。
2.线程安全
StringBuffer是线程安全的,StringBuilder是非线程安全的
3速度
StringBuilder 最快,StringBuffer次之,String最慢
适用范围
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
赋值特殊情况
String str=“abc”+“de”;
StringBuilder stringBuilder=new StringBuilder().append(“abc”).append(“de”);
System.out.println(str);
System.out.println(stringBuilder.toString());
结果相同,都为“abcde”
但操作速度却是String更快,这是因为String拼接两个字符串常量,上面代码第一行的格式,等同于String=“abcde”,直接拼接在一起,无需创建回收对象。
StringBuffer和StringBuilder的使用
在我们使用时仍需用toString方法将StringBu和StringBudder装换为String类型才可输出。