我知道 concat、StringBuffer 和 StringBuilder 之间的区别。我知道 StringBuffer.toString 后备数组存在内存问题,它会导致内存爆炸。我什至知道 JDK Sun 优化包括为初始容量分配 2 的幂。
但我仍然想知道重用 StringBuffer(在 toString() 中使用)的最佳方法,或者重用 StringBuffer 是否相关。考虑到内存和速度性能,哪一个更好?
public String toString2() {
StringBuffer sb = new StringBuffer(<size>)
... several .append(stuff) ...
sb.trimToSize()
return sb.toString()
}
或者
private StringBuffer sb = new StringBuffer(<size>)
public String toString2() {
sb.delete()
sb.setLength(1024)
sb.trimToSize()
... several .append(stuff) ...
return sb.toString()
}
为什么?