我注意到capacity方法在没有逻辑的情况下返回了StringBuilder容量
方式...有时它的值等于字符串长度,而有时更大。

是否有一个方程式可以知道其逻辑是什么?

最佳答案

当您附加到StringBuilder时,将发生以下逻辑:

if (newCount > value.length) {
    expandCapacity(newCount);
}

其中newCount是所需的字符数,value.length是缓冲区的当前大小。
expandCapacity只是增加了后备char[]的大小
ensureCapacity()方法是调用expandCapacity()的公共(public)方法,其文档显示:

10-08 19:33