1、AbstractStringBuilder 下的append方法
public AbstractStringBuilder append(String str) {
if (str == null)
return appendNull();
int len = str.length();
ensureCapacityInternal(count + len);
str.getChars(0, len, value, count);
count += len;
return this;
}
2、StringBuffer实现
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}
3、StringBuilder实现
public StringBuilder append(String str) {
super.append(str);
return this;
}
4、如上,类似的StringBuffer的相关操作方法都加了synchronized 修饰,是线程安全的
StringBuilder未加修饰,非线程安全。
5、append方法根据getChars直接复制字符到当前对象之后,未产生新的对象,避免了不断创建字符串对象。