20.10.26 java基础——String Sringbuffer Stringbuilder
1.是否可变
我们知道,Java中所有的类都默认继承至Object类,他是所有类的基类。查看jdk源码得知String类用final关键字修饰,(final修饰的类不可被继承,方法不可被重写,变量不可变),所以,String类型的变量值一旦被创建便不可修改。StringBuffer和StringBuiled是可变的。
2.是否线程安全
StringBuffer和StringBuiled都继承于AbstractStringBuilder类,在AbstractStringBuilder中是使用字符数组保存字符串,她俩可以共用AbstractStringBuilder里面公共的方法和变量,这是他们的共同点,不同点在于,打开StringBuffer类的源码,可以看到他里面的方法都默认加了同步锁或者对调用的方法加了同步锁,所以他是线程安全的,为了防止线程中的冲突,适合于多线程开发。而StringBuiled没有,所以是线程不安全的。
3.性能速度
处理的速度,StringBuilder是最好的,其次是StringBuffer,而最后是String。所以,操作少量数据用String,大量数据单线程用StringBuiled.多线程用StringBuffer。
用法
public static String arryToString(Integer[] i){
StringBuilder sb=new StringBuilder();
sb.append("[");
for (int x=0;x<i.length;x++){
if(x!=i.length-1)
sb.append(i[x]+",");
else
sb.append(i[x]);
}
sb.append("]");
return sb.toString();
}