Java基础

String,StringBuilder和StringBuffer比较

1. 三者都是final类
2. String长度不可变,StringBuilder和StringBuffer长度可变
3. StringBuilder非线程安全实现,StringBuffer通过synchronized保证线程安全,锁开销使StringBuilder效率优于StringBuffer
4.String 使用‘+’ 拼接字符串时编译器会自动转化为StringBuilder的append方法实现
//StringBuilder字符串拼接append方法实现:

public StringBuilder append(String str) {

super.append(str);

return this;

}

  

//StringBuffer字符串拼接append方法实现:

public synchronized StringBuffer append(Object obj) {

//synchronized保证线程安全

toStringCache = null;

//调用父类字符数组复制

super.append(String.valueOf(obj));

return this;

}

//两者继承父类AbstractStringBuilder,字符数组复制

public AbstractStringBuilder append(StringBuffer sb) {

if (sb == null)

return appendNull();

int len = sb.length();

ensureCapacityInternal(count + len);

sb.getChars(0, len, value, count);

count += len;

return this;

}

你可能感兴趣的:(java)