2016-06-28 7 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); 
} 

StringBuilder 변수 'url'은 최대 용량을 갖거나 모든 것을 수용 할 수 있습니까?

답변

7

예, 최대 정수의 용량은 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.

여기 StringBuilder 클래스 도달되는 수 있기 때문에 파라미터 int와 최대 용량 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에 할당 된 메모리 양에 관계없이 요청 된 배열 크기가 VM 제한을 초과합니다. 간단히 말해,이 대답의 어떤 부분도 관련성이없고 정확한 질문이 아닙니다. – Andreas

+0

@ Andreas 예 맞습니다. 충분한 메모리를 사용할 수없는 경우,'OutOfMemory' JVM Error가 발생합니다. 나는 그 오류를 언급하지 않았다. 감사합니다. –

+0

충분한 메모리 *를 사용할 수 있다고해도, 새로운 char [Integer.MAX_VALUE]가 작동한다는 것을 의미하지는 않습니다. 배열의 최대 크기는 플랫폼에 따라 다른 제약 조건에 의해 제한 될 수 있습니다. – Andreas