2019-11-19-String-StringBuffer-StringBuilder区别
String 字符串常量(final 修饰,不可被继承),String是常量,当创建之后不能更改。(可以通过StringBuffer和StringBuilder创建String对象操作)
StringBuffer 字符串变量(线程安全),其也是final类别的,不允许被继承,其中的绝大多数方法都进行了同步处理,包括常用的Append方法也做了同步处理(synchronized 修饰)
其自jdk1.0起就已经出现。其toString方法会进行对象缓存,以减少元素复制开销
public synchronized String toString(){ if (toStringCache == null){ toStringCache = Arrays.copyOfRange(value,0,count); } return new String(toStringCache,true) ; }
StringBuilder 字符串变量(非线程安全)其自jdk1.5起开始出现。与StringBuffer一样都继承和实现了同样的接口和类,方法除了没有使用synchronized修饰以外基本一致,
不同之处在于最后toString的时候,会直接返回一个新对象。
public String toString(){ //Create a copy , don't share the array return new String(value,0,count); }

浙公网安备 33010602011771号