String StringBuilder StringBuffer的区别

1.String是final类型的不可以被继承是不可变的

  StringBuffer、StringBuilder是可以变的

2.速度 StringBuilder>StringBuffer>String

  StringBuffer是线程安全的

  StringBuidler是线程非安全的

String s1 = This is only a+ simple+ test;
StringBuffer Sb = new StringBuilder(This is only a).append(simple).append(test);

Java Compiler直接把上述第一条语句编译为:
String s2 = This is only a;  
String s3 = simple;  
String s4 = test;  
String s1 = s2 + s3 + s4;

3.使用策略

  1)少量数据操作可以String;单线程操作用SringBuilder;多线程操作用StringBuffer

  2)不要使用String的“+”来拼接,这样的性能很差;应该用下面的第二种:

String result = "";  
for (String s : hugeArray) {  
    result = result + s;  
}  
  
  
StringBuilder sb = new StringBuilder();  
for (String s : hugeArray) {  
    sb.append(s);  
}  
String result = sb.toString();

 3)StringBuffer用在全局变量中;StringBuilder用在方法内部中

 3)一般情况下直接用Stringbuffer,因为builder的性能最多提高10%-15%,除非确认不是运行在多线程下并且性能瓶颈是在buffer上。

原文地址:https://www.cnblogs.com/zhengtu2015/p/4871259.html