Я попытаюсь объяснить это с помощью некоторого примера.
public class StringBuilderDemo {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
System.out.println(sb.length());
System.out.println(sb.capacity());
}
}
length()
- длина последовательности символов в построителе, так как этот stringbuilder не содержит никакого содержимого, его длина будет 0.
capacity()
- количество выделенных пространств символов. Когда вы пытаетесь построить stringbuilder с пустым содержимым, по умолчанию он принимает размер инициализации как length + 16, который равен 0 + 16. поэтому емкость вернет здесь 16.
Примечание. Емкость, возвращаемая методом capacity (), всегда больше или равна длине (обычно больше) и автоматически расширяется по мере необходимости, чтобы
Логика функции емкости:
Этот анализ берет из фактического кода StringBuilder.java