我注意到capacity
方法在没有逻辑的情况下返回了StringBuilder
容量
方式...有时它的值等于字符串长度,而有时更大。
是否有一个方程式可以知道其逻辑是什么?
最佳答案
当您附加到StringBuilder
时,将发生以下逻辑:
if (newCount > value.length) {
expandCapacity(newCount);
}
其中
newCount
是所需的字符数,value.length
是缓冲区的当前大小。expandCapacity
只是增加了后备char[]
的大小ensureCapacity()
方法是调用expandCapacity()
的公共(public)方法,其文档显示: