When you append to the StringBuilder
, the following logic happens:
if (newCount > value.length) {
expandCapacity(newCount);
}
where newCount
is the number of characters needed, and value.length
is the current size of the buffer.
expandCapacity
simply increases the size of the backing char[]
The ensureCapacity()
method is the public way to call expandCapacity()
, and its docs say:
Ensures that the capacity is at least equal to the specified minimum. If the current capacity is less than the argument, then a new internal array is allocated with greater capacity. The new capacity is the larger of:
- The minimumCapacity argument.
- Twice the old capacity, plus 2.
If the minimumCapacity argument is nonpositive, this method takes no action and simply returns.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…