2016-06-28 2 views
6

Имеет ли StringBuilder ограничение символов для максимальной емкости в JAVA.Сколько символов может содержать Java StringBuilder?

StringBuilder url=new StringBuilder(); 

stmt = connnection.createStatement(); 
String sql="SOME QUERY"; 
rs = stmt.executeQuery(sql); 
while(rs.next()) 
{ 
    String emailId=rs.getString("USER_EMAIL_ID"); 
    url.append(emailId); 
} 

У переменной «url» переменной StringBuilder максимальная емкость, или она может удерживать все?

ответ

7

Да, у этого есть ограничение вместимости max integer, которое 2147483647 (технически).

StringBuilder внутренне хранит хрустали в объекте char[], а массив имеет ограничение по размеру. read more about it on other thread

+2

и что произойдет, если он превысит максимальный лимит? –

0

Если пройти по этой ссылке это может очистить вас больше Oracle Docs String Builder Buffer Capacity

Теперь вы хотите, чтобы объявить емкость любого класса StringBuilder, то один конструктор StringBuilder(int initCapacity) определяется для этого.

StringBuilder(int initCapacity) :- Creates an empty string builder with the specified initial capacity.

Вот из-параметра, как int максимальная емкость, что StringBuilder класс может достигнуть это будет 2147483647.

Существуют различные методы, касающиеся этого контекста Емкости в StringBuilder Класс, эти методы также учитывают параметры типа int.

void setLength(int newLength) :- Sets the length of the character sequence. If newLength is less than length(), the last characters in the character sequence are truncated. If newLength is greater than length(), null characters are added at the end of the character sequence.

void ensureCapacity(int minCapacity) :- Ensures that the capacity is at least equal to the specified minimum.

эти методы также принимает аргумент от int типа. Итак, используя эти методы или конструкторы, вы сможете генерировать объект с максимальной емкостью 2147483647.

+4

Ни один из методов, которые вы указали, не имеет ничего общего с * максимальной * емкостью, о чем и идет речь. Ссылка, которую вы указали, ничего не говорит о максимальной емкости. Что касается вашего последнего предложения, просто потому, что параметр является 'int', это не означает, что вы не получите ошибку, если вы дадите максимально возможное целочисленное значение, а' new StringBuilder (Integer.MAX_VALUE) 'получит' OutOfMemoryError: размер запрашиваемого массива превышает лимит VM, независимо от того, сколько памяти вы назначили виртуальной машине. Короче говоря, ни одна часть этого ответа не является актуальной и точной для вопроса. – Andreas

+0

@ Аndreas да Вы правы. Если достаточная память недоступна, она будет вызывать ошибку «OutOfMemory» JVM. Я не упомянул об ошибке. Спасибо –

+0

Даже если достаточно памяти * есть *, это не значит, что 'new char [Integer.MAX_VALUE]' будет работать. Максимальный размер массива может быть ограничен другими ограничениями, которые зависят от платформы. – Andreas

Смежные вопросы