Какова емкость StringBuffer? - PullRequest
11 голосов
/ 04 ноября 2011

Когда я запускаю этот код:

StringBuffer name = new StringBuffer("stackoverflow.com");
System.out.println("Length: " + name.length() + ", capacity: " + name.capacity());

это дает вывод:

Длина: 17, емкость: 33

Очевидная длина связана с количеством символов в строке, но я не уверен, что емкость? Это количество символов, которое StringBuffer может хранить перед перераспределением пространства?

Ответы [ 13 ]

1 голос
/ 04 ноября 2011

"Каждый строковый буфер имеет емкость. Пока длина последовательности символов, содержащейся в строковом буфере, не превышает емкость, нет необходимости выделять новый массив внутреннего буфера. Если внутренний буфер переполняется, автоматически увеличивается. "

http://download.oracle.com/javase/1.3/docs/api/java/lang/StringBuffer.html -смотреть емкость () и обеспечить емкость ()

0 голосов
/ 10 июля 2017

Начальная емкость класса StringBuffer / StringBuilder равна 16. Впервые, если длина вашей строки становится> 16. Емкость класса StringBuffer / StringBuilder увеличивается до 34 т. Е. [(16 * 2) +2]

Но когда длина вашей строки становится> 34, емкость класса StringBuffer / StringBuilder становится точно равной текущей длине строки.

0 голосов
/ 04 ноября 2011

Иван, просто прочитайте документацию для емкость () - это прямо отвечает на ваш вопрос ...

...