Differenza tra String StringBuffer e StringBuilder in Java

Differenza chiave - Stringa vs StringBuffer vs StringBuilder in Java
 

String, StringBuffer e String Builder sono classi in Java. La stringa è ampiamente usata nella programmazione Java. Una volta creato un oggetto di String, non è possibile cambiarli. Ogni volta che si verifica una modifica alla stringa, crea una nuova stringa. Anche se è una concatenazione a una stringa esistente, crea una nuova stringa. Ciò causa uno spreco di memoria. Le classi StringBuffer e StringBuilder in Java vengono utilizzate per modificare String. Il differenza fondamentale tra String, StringBuffer e StringBuilder in Java è quello String è una classe per creare un oggetto di tipo String che è una sequenza di caratteri, StringBuffer è una classe che viene utilizzata per modificare le stringhe che fornisce la sicurezza del thread e StringBuilder è una classe che viene utilizzata per modificare le stringhe che non forniscono la sicurezza del thread.

CONTENUTO

1. Panoramica e differenza chiave
2. Cos'è String in Java
3. Che cos'è StringBuffer in Java
4. Cosa è StringBuilder in Java
5. Somiglianze tra String StringBuffer e StringBuilder in Java
6. Confronto affiancato - String vs StringBuffer vs StringBuilder in Java in formato tabulare
7. Sommario

Cos'è String in Java?

La classe string è nel pacchetto java.lang. Ogni volta che il programmatore crea una stringa, è un oggetto di tipo String. Le stringhe sono un significato immutabile una volta creato l'oggetto, non può essere modificato. Anche gli oggetti creati usando classi wrapper come Integer, Byte, Float, Double sono immutabili. Una stringa letterale è racchiusa tra virgolette. per esempio. "Ciao mondo". Ogni volta che viene creato un valore letterale stringa, Java Virtual Machine (JVM) controlla il pool di costanti stringa. Se la stringa esiste, viene restituito un riferimento al pool di costanti stringa. Se si tratta di una nuova stringa, tale oggetto viene creato nel pool di costanti stringa.

Figura 01: programma Java che utilizza String, StringBuffer e StringBuilder

Fare riferimento al codice riportato di seguito.

String s1 = "Ciao";

s1 = s1 + "Mondo";

System.out.println (S1);

Nella prima istruzione, s1 fa riferimento a "Hello" nel pool di costanti String. Nella seconda istruzione, JVM non modifica la stringa esistente. Invece, crea una nuova stringa come "Hello World" e s1 si riferisce ora a quella nuova String. L'oggetto "Hello" in uscita esiste ancora nel pool di costanti String.

Se c'è un codice che è,

String s1 = "Ciao";

String s2 = s1;

entrambi s1, s2 si riferiranno all'oggetto String "Hello".

Che cos'è StringBuffer in Java?

La classe StringBuffer viene utilizzata per rendere mutabili gli oggetti String. Pertanto, tali oggetti possono essere modificati. StringBuffer definisce quattro costruttori. StringBuffer (), StringBuffer (int size), StringBuffer (String str), StringBuffer (charSequence [] ch)

Fai riferimento al codice qui sotto,

StringBuffer s1 = new StringBuffer ("Hello");

s1.append ( “World”);

System.out.println (S1);

Nell'istruzione 1, s1 si riferisce all'oggetto "Hello" in un heap. L'oggetto è modificabile perché è stato creato utilizzando StringBuffer. Nell'istruzione 2, "Mondo" viene aggiunto allo stesso oggetto String "Hello".

Gli oggetti stringa creati con la classe StringBuffer possono risparmiare memoria. StringBuffer fornisce sicurezza thread perché due thread non possono accedere allo stesso metodo nella classe StringBuffer contemporaneamente. La sicurezza del thread diminuisce le prestazioni di StringBuffer. La classe StringBuffer contiene metodi come append (), insert (), reverse (), replace ().

Cosa è StringBuilder in Java?

La classe StringBuilder viene utilizzata per rendere mutevoli gli oggetti String. Pertanto, tali oggetti possono essere modificati. La funzionalità è simile a StringBuffer, ma ciò non garantisce la sicurezza dei thread. StringBuilder ha costruttori come StringBuilder (), StringBuilder (int size), StringBuilder (String str).

Fare riferimento al codice seguente.

StringBuilder s1 = new StringBuilder ("Hello");

s1.append ( “World”);

System.out.println (S1);

Nell'istruzione 1, s1 si riferisce all'oggetto "Hello" in un heap. L'oggetto è modificabile perché è stato creato utilizzando StringBuilder. Nell'istruzione 2, "Mondo" viene aggiunto allo stesso oggetto String "Hello". Non esiste la creazione di un oggetto String completamente nuovo.

Gli oggetti stringa creati con la classe StringBuilder possono risparmiare memoria. Diversamente da StringBuffer, StringBuilder non fornisce sicurezza thread perché due thread possono accedere allo stesso metodo nella classe StringBuilder contemporaneamente. La classe StringBuilder contiene metodi come append (), insert (), reverse (), replace ().

Qual è la similarità tra String, StringBuffer e StringBuilder in Java?

  • Tutto può essere utilizzato per creare stringhe.

Qual è la differenza tra String StringBuffer e StringBuilder in Java?

String vs StringBuffer vs StringBuilder

Stringa La stringa è una classe Java che viene utilizzata per creare un oggetto di tipo String, che è una sequenza di caratteri.
StringBuffer StringBuffer è una classe Java che viene utilizzata per creare oggetti String, che possono essere modificati con sicurezza dei thread.
StringBuilder StringBuilder è una classe che viene utilizzata per creare oggetti stringa, che possono essere modificati senza la sicurezza del thread.
Mutabilità
Stringa La stringa è una classe immutabile.
StringBuffer StringBuffer è una classe mutabile.
StringBuilder StringBuilder è una classe mutabile.
Filo di sicurezza
Stringa I metodi di stringa sono thread-safe.
StringBuffer I metodi di StringBuffer sono thread-safe e sincronizzati.
StringBuilder I metodi di StringBuilder non sono threaded safe e non sincronizzati.
Prestazione
Stringa La stringa è veloce.
StringBuffer StringBuffer è lento.
StringBuilder StringBuilder è veloce.

Riepilogo: stringa vs StringBuffer vs StringBuilder in Java 

String, StringBuffer e StringBuilder sembrano uguali, ma hanno significati diversi. Tutte queste sono classi Java. La differenza tra String, StringBuffer e StringBuilder in Java è che, String è una classe per creare un oggetto di tipo String, che è un set di caratteri, StringBuffer è una classe che viene utilizzata per modificare le stringhe e fornire sicurezza dei thread, mentre StringBuilder è un classe che viene utilizzata per modificare le stringhe che non fornisce la sicurezza del thread.

Scarica PDF String vs StringBuffer vs StringBuilder in Java

È possibile scaricare la versione PDF di questo articolo e utilizzarlo per scopi offline come da nota di citazione. Si prega di scaricare la versione PDF qui Differenza tra String StringBuffer e StringBuilder in Java

Riferimento:

1. "String vs StringBuffer vs StringBuilder." JournalDev, 30 luglio 2017. Disponibile qui
2. "Java Hungry." Differenza tra le classi String, StringBuilder e StringBuffer con Esempio: Java | Java affamato. Disponibile qui 
3.tutorialspoint.com. "Stringhe Java". Il puntoDisponibile qui