Как рассчитать емкость строкового буфера?

 import java.io.*;

class GFG {

    public static void main(String[] args) {
        StringBuffer s = new StringBuffer("AAA");
        int p = s.length();
        int q = s.capacity();
        System.out.println("Length of string =" + p);
        System.out.println("Capacity of string =" + q);
    }
}

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

Длина строки =3 Емкость строки =19

На самом деле длину можно найти по количеству символов в строке, поэтому я знаю прямой ответ без IDE. Но как точно рассчитать емкость строки. Как я могу получить представление о емкости строки без использования какой-либо IDE.


person Poorna Senani Gamage    schedule 21.07.2018    source источник
comment
Зачем вам нужно знать емкость вашего StringBuffer?   -  person Tim Biegeleisen    schedule 21.07.2018
comment
Насколько мне известно, ответ является деталью реализации и может меняться между версиями Java. Для чего вам нужна эта информация? Если вы можете добавить дополнительную информацию о своем варианте использования в свой вопрос, возможно, вам будет легче ответить.   -  person Daniel Pryden    schedule 21.07.2018
comment
Согласен: в принципе это деталь реализации. Обратите внимание, что API определяет общедоступный метод AbstractStringBuilder.ensureCapacity() для поведения «удвоить и добавить 2». Я не думаю, что есть какая-то абсолютная гарантия того, что этот метод и внутренний метод, используемый при вызове append(), на самом деле будут одинаковыми, но пока они совпадают.   -  person Neil Coffey    schedule 21.07.2018


Ответы (1)


Емкость — это размер внутреннего буфера. Обычно вас это волнует только тогда, когда вы предварительно задаете размер буфера для построения строки, максимальный размер которой вам уже известен. Строковые буферы/построители автоматически увеличивают свою емкость, когда это необходимо.

person Wormbo    schedule 21.07.2018