1、StringBuffer
@Override
public synchronized String toString() {
if (toStringCache == null) {
toStringCache = Arrays.copyOfRange(value, 0, count);
}
return new String(toStringCache, true);
}
2、StringBuilder
@Override
public String toString() {
return new String(value, 0, count);
}
3、比较
- StringBuffer 的缓存区有数据时,可以直接从缓存区中取;而 StringBuilder 每次都是直接 copy。
- 这样 StringBuffer 相对 StringBuilder 来说其实是做了一个性能上的优化,所有只有当数量足够大,StringBuffer 的缓冲区填补不了加锁影响的性能时,StringBuilder 才在性能上展现出了它的优势
4、以前的总结
String、StringBuild、StringBuffer的区别