Grafico comparativo
Base per il confronto | Stringa | StringBuffer |
---|---|---|
Di base | La lunghezza dell'oggetto String è fissa. | La lunghezza di StringBuffer può essere aumentata. |
Modifica | L'oggetto stringa è immutabile. | L'oggetto StringBuffer è mutabile. |
Prestazione | È più lento durante la concatenazione. | È più veloce durante la concatenazione. |
Memoria | Consuma più memoria. | Consuma meno memoria |
Conservazione | Pool 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.
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
- La lunghezza dell'oggetto String è fissa ma la lunghezza di un oggetto di StringBuffer può essere aumentata quando richiesto.
- L'oggetto stringa è immutabile, vale a dire che l'oggetto non può essere riassegnato di nuovo mentre l'oggetto di StringBuffer è mutabile.
- L'oggetto String è più lento nelle prestazioni mentre, l'oggetto StringBuffer è più veloce.
- L'oggetto String consuma più memoria, mentre gli oggetti StringBuffer consumano meno memoria.
- 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.