1.创建形式的不同
String 的创建方式有2两种 直接赋值 例如:String str="abck"; String abc=new String("abc");
StringBuffer 的创建方式只能通过构造函数,StringBuffer abc=new StringBuffer("abc");
2.修改值的形式不同
例如:String s="abc"; s+="cde";
StringBuffer s=new StringBuffer("abc");
StringBuffer 只能通过 s.append("abd");
3.性能不同
由于他们创建形式的不同,导致了性能的不同,String 是一个final 类型的对象,创建之后的对象不能被修改,如果需要修改,需要重新创建新的对象,旧的对象会被
GC 垃圾回收器清理。 StringBuffer 创建后的对象是一个需要不修改的对象,也就是需要修改值的时候,不用再创建新的对象。所以StringBuffer 比String 的性能更好一些
例如 在字符串的连接操作中,
String str = new String("welcome to ");
str += "here"; 的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后 再将StringBuffer toSting(); 这样也是消耗性能的。
你可以循环10000次连接字符,来测试两个的性能
4.StringBuffer 是线程安全的,在多线程执行的程序中可能会慢一些(猜测,该如何证明呢?)
5.StringBuffer 的一些对字符串操作的方法。例如:
append() ,
public StringBuffer append(boolean b)
deleteCharAt方法
public StringBuffer deleteCharAt(int index)
insert方法
public StringBuffer insert(int offset, String s)
reverse方法
public StringBuffer reverse()
等一些方法