Differenza tra String e StringBuffer Class in Java
Contenuto
String e StringBuffer sono entrambe le classi che operano sulle stringhe. La classe StringBuffer è la classe peer della classe String. L'oggetto della classe String è di lunghezza fissa. L'oggetto della classe StringBuffer è coltivabile. La differenza fondamentale tra String e StringBuffer è che l'oggetto della classe "String" è immutabile. L'oggetto della classe "StringBuffer" mutevole.
- Tabella di comparazione
- Definizione
- Differenze chiave
- Conclusione
Tabella di comparazione
Base per il confronto | Corda | StringBuffer |
---|---|---|
Di base | La lunghezza dell'oggetto String è fissa. | La lunghezza di StringBuffer può essere aumentata. |
Modifica | L'oggetto stringa è immutabile. | L'oggetto StringBuffer è modificabile. |
Prestazione | È più lento durante la concatenazione. | È più veloce durante la concatenazione. |
Memoria | Consuma più memoria. | Consuma meno memoria. |
Conservazione | Pool costante di stringhe. | Heap Memory. |
Definizione di stringa
"String" è una classe in Java. L'oggetto della classe String ha una lunghezza fissa e, cosa più importante da ricordare, l'oggetto della classe String è "immutabile". Dopo aver inizializzato l'oggetto String, non è possibile modificarlo nuovamente. L'oggetto della classe String è memorizzato nel pool di costanti String.
Cerchiamo innanzitutto di capirlo, ogni volta che crei una stringa; si crea un oggetto di tipo stringa. Le costanti di stringa sono anche oggetti stringa.
System.out.ln ("Ciao, questa è la soluzione Teckpix");
Nell'istruzione precedente, la stringa "Hello this is Teckpix Solution" è una costante String.
Vediamo ora la mutabilità dell'oggetto String con l'aiuto di un esempio.
String str = new String ("Teckpix"); str.concat ( "Soluzione"); system.out.ln (str); // output Teckpix
Nel codice sopra, ho provato a concatenare le due stringhe "Teckpix" e "Solution". Come sappiamo ogni volta che viene creata una stringa, ciò significa che viene creato l'oggetto di tipo String. Quindi, la stringa "Teckpix" crea un oggetto, il cui riferimento è assegnato all'oggetto stringa "str". Successivamente, ho provato a concatenare un'altra stringa "Soluzione" con la stringa "Teckpix" utilizzando il metodo "concat ()" della classe String.
Poiché gli oggetti String sono immutabili, non viene apportata alcuna modifica alla stringa "Teckpix" e la nuova stringa "Soluzione" crea un altro oggetto nel pool di costanti di stringhe. Ma il riferimento all'oggetto "Soluzione" non viene catturato da nessun oggetto, quindi il riferimento all'oggetto Soluzione viene perso anche se è ancora presente nel pool di costanti di stringhe. Poiché non viene apportata alcuna modifica all'oggetto Teckpix, quando l'oggetto str a cui ho assegnato il riferimento di Teckpix in precedenza, sarà solo la stringa "Teckpix".
Definizione StringBuffer
La classe "StringBuffer" è la classe peer della classe "String". La classe StringBuffer fornisce più funzionalità alle stringhe. L'oggetto della classe StringBuffer è mutabile, ovvero il suo oggetto può essere modificato. La lunghezza dell'oggetto StringBuffer è espandibile. È possibile inserire i caratteri o le sottostringhe nel mezzo del valore letterale di stringa assegnato all'oggetto StringBuffer o alla fine di esso. StringBuffer alloca spazio per 16 caratteri aggiuntivi quando non è richiesta una lunghezza specifica.
Cerchiamo di capire la mutabilità dell'oggetto StringBuffer con l'aiuto di un esempio:
StringBuffer Sb = new StringBuffer ("Teckpix"); Sb.append ( "Soluzione"); system.out.ln (Sb); // Output Teckpix Solution
Come sappiamo che l'oggetto StringBuffer è mutabile. Il metodo append () modifica l'oggetto StringBuffer Sb a cui inizialmente viene assegnato in precedenza il riferimento all'oggetto "Teckpix". Il metodo append () aggiunge la nuova stringa letterale "Soluzione", alla fine della stringa letterale "Teckpix". Ora, quando l'oggetto Sb sarà l'oggetto stringa modificato "Teckpix Solutions".
- La lunghezza dell'oggetto String è fissa ma la lunghezza di un oggetto di StringBuffer può essere aumentata quando richiesto.
- L'oggetto String è immutabile, ovvero l'oggetto non può essere riassegnato nuovamente, mentre l'oggetto StringBuffer è mutabile.
- L'oggetto String ha prestazioni più lente, mentre l'oggetto StringBuffer è più veloce.
- L'oggetto String consuma più memoria mentre gli oggetti StringBuffer consumano meno memoria.
- Gli oggetti String sono archiviati in un pool costante mentre gli oggetti StringBuffer sono archiviati nella memoria heap.
Conclusione:
Gli oggetti StringBuffer forniscono più funzionalità alle stringhe rispetto alla classe String. Pertanto, è preferibile lavorare con StringBuffer anziché con la classe String.