Raccomandato, 2024

Scelta Del Redattore

Differenza tra la classe String e StringBuffer in Java

String e StringBuffer sono entrambe le classi che operano su 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" è mutabile .

Grafico comparativo

Base per il confrontoStringaStringBuffer
Di baseLa lunghezza dell'oggetto String è fissa.La lunghezza di StringBuffer può essere aumentata.
ModificaL'oggetto stringa è immutabile.L'oggetto StringBuffer è mutabile.
PrestazioneÈ più lento durante la concatenazione.È più veloce durante la concatenazione.
MemoriaConsuma più memoria.Consuma meno memoria
ConservazionePool costante di stringhe.Memoria di heap.

Definizione di String

"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". Una volta inizializzato l'oggetto String, non è più possibile modificare l'oggetto. L'oggetto della classe String è archiviato nel pool di costanti stringa.

Cerchiamo di capirlo prima, ogni volta che crei una stringa; crei un oggetto di tipo stringa. Le costanti di stringa sono anche oggetti stringa.

 System.out.println ("Ciao questa è la soluzione Teckpix"); 

Nell'istruzione precedente, la stringa "Hello this is Teckpix Solution" è una costante String.

Ora capiamo la mutabilità dell'oggetto String con l'aiuto di un esempio.

 String str = new String ("Teckpix"); str.concat ( "Soluzione"); system.out.println (str); // output Teckpix 

Nel codice precedente, ho provato a concatenare le due stringhe "Teckpix" e "Soluzione". Come sappiamo ogni volta che viene creata una stringa significa che l'oggetto di tipo String viene creato. Quindi, la stringa "Teckpix" crea un oggetto, il cui riferimento è assegnato all'oggetto stringa "str". Successivamente, ho cercato di concatenare un'altra stringa "Soluzione" con la stringa "Teckpix" usando 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 costante di stringhe. Tuttavia, il riferimento all'oggetto "Soluzione" non viene catturato da alcun oggetto, quindi il riferimento all'oggetto Soluzione viene perso sebbene sia ancora presente nel lotto costante di stringhe. Poiché non viene apportata alcuna modifica all'oggetto Teckpix, quando stampo lo str oggetto a cui ho assegnato il riferimento di Teckpix in precedenza, stamperà solo la stringa "Teckpix".

Definizione di StringBuffer

La classe "StringBuffer" è la classe peer della classe "String". La classe StringBuffer fornisce più funzionalità alle stringhe. L'oggetto della classe StringBuffer è mutabile e il suo oggetto può essere modificato. La lunghezza dell'oggetto StringBuffer è realizzabile. È possibile inserire i caratteri o sottostringhe nel mezzo del letterale stringa assegnato all'oggetto StringBuffer o alla fine di esso. StringBuffer alloca lo spazio per 16 caratteri aggiuntivi quando non viene richiesta una lunghezza specifica.

Cerchiamo di capire la mutabilità dell'oggetto StringBuffer con l'aiuto di un esempio:

 StringBuffre Sb = new StringBuffer ("Teckpix"); Sb.append ( "Soluzione"); system.out.println (Sb); // Output Teckpix Solution 

Come sappiamo che l'oggetto StringBuffer è mutabile. Il metodo append () modifica l'oggetto StringBuffer Sb a cui inizialmente, il riferimento dell'oggetto "Teckpix" è assegnato in precedenza. Il metodo append () aggiunge la nuova stringa letterale "Soluzione" alla fine della stringa letterale "Teckpix". Ora, quando stampo l'oggetto Sb, stamperà l'oggetto stringa modificato "Teckpix Solutions".

Differenza chiave tra stringa e StringBuffer

  1. La lunghezza dell'oggetto String è fissa ma la lunghezza di un oggetto di StringBuffer può essere aumentata quando richiesto.
  2. L'oggetto stringa è immutabile, vale a dire che l'oggetto non può essere riassegnato di nuovo mentre l'oggetto di StringBuffer è mutabile.
  3. L'oggetto String è più lento nelle prestazioni mentre, l'oggetto StringBuffer è più veloce.
  4. L'oggetto String consuma più memoria, mentre gli oggetti StringBuffer consumano meno memoria.
  5. Gli oggetti stringa vengono 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. Quindi, è preferibile lavorare con StringBuffer anziché con Stringa di classe.

Top