2016-06-28 28 views
6

Does StringBuilder ha un limite di caratteri per la massima capacità in JAVA.Quanti caratteri può contenere un StringBuilder Java?

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); 
} 

la variabile 'url' della variabile StringBuilder ha una capacità massima o può contenere tutto?

risposta

7

Sì, ha la capacità massima del numero intero massimo 2147483647 (tecnicamente).

StringBuilder contiene internamente chracters nell'oggetto char[] e la dimensione dell'array è limitata. read more about it on other thread

+2

e cosa succede se supera il limite massimo? –

0

Se si passa attraverso con questo link questo può cancellare più Oracle Docs String Builder Buffer Capacity

Ora si vuole dichiarare la capacità di qualsiasi classe StringBuilder, quindi un costruttore StringBuilder(int initCapacity) è definito per questo.

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

qui a causa del parametro come int la capacità massima che una classe può StringBuilder è raggiungere sarà 2147483647.

ci sono vari metodi per questo contesto di Capacità nella classe StringBuilder, tali metodi considerano anche i parametri di tipo 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.

questi metodi richiede anche come argomento di int tipo. Quindi, utilizzando questi metodi o controsoff puoi generare un oggetto con capacità massima di 2147483647.

+4

Nessuno dei metodi che hai mostrato, ha nulla a che fare con la capacità * massima *, che è la domanda. Il link che hai fornito non dice nulla sulla capacità massima. Per quanto riguarda la tua ultima frase, solo perché il parametro è un 'int', non significa che non otterrai un errore se assegni il valore intero massimo possibile, e' otterrà 'new StringBuilder (Integer.MAX_VALUE)' OutOfMemoryError: le dimensioni degli array richieste superano il limite della VM, indipendentemente dalla quantità di memoria assegnata alla VM. In breve, nessuna parte di questa risposta è pertinente e precisa per la domanda. – Andreas

+0

@Andreas si hai ragione. Se non è disponibile memoria sufficiente, verrà generato un errore JVM 'OutOfMemory'. Non ho menzionato l'errore. Grazie –

+0

Anche se è disponibile una quantità sufficiente di memoria *, ciò non significa che il 'nuovo carattere [Intero.MAX_VALORE]' funzionerà. La dimensione massima di un array può essere limitata da altri vincoli, che dipendono dalla piattaforma. – Andreas