Differenza chiave - String vs StringBuffer vs StringBuilder in Java
String, StringBuffer e String Builder sono classi in Java. La stringa è ampiamente utilizzata 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. La differenza fondamentale tra String, StringBuffer e StringBuilder in Java è che 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 è un classe utilizzata per modificare le stringhe che non forniscono thread safety.
CONTENUTI
1. Panoramica e differenze chiave
2. Cos'è String in Java
3. Cos'è StringBuffer in Java
4. Cos'è StringBuilder in Java
5. Somiglianze tra String StringBuffer e StringBuilder in Java
6. Confronto affiancato - String vs StringBuffer vs StringBuilder in Java in forma tabulare
7. Riepilogo
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 hanno un significato immutabile una volta che l'oggetto è stato creato, non può essere modificato. Anche gli oggetti creati utilizzando classi wrapper come Integer, Byte, Float, Double sono immutabili. Un valore letterale stringa è racchiuso tra virgolette doppie. ad esempio "Hello World". Ogni volta che viene creato un valore letterale stringa, la JVM (Java Virtual Machine) controlla il pool di costanti String. Se la stringa esiste, viene restituito un riferimento al pool di costanti String. Se è una nuova stringa, quell'oggetto viene creato nel pool di costanti String.
Figura 01: programma Java che utilizza String, StringBuffer e StringBuilder
Fare riferimento alla parte di codice sottostante.
String s1 = "Hello";
s1 = s1 + "Mondo";
System.out.println (s1);
Nella prima istruzione, s1 si riferisce 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 ora si riferisce a quella nuova stringa. L'oggetto "Hello" in uscita esiste ancora nel pool di costanti String.
Se c'è un codice che è, String s1 = "Hello";
Stringa s2 = s1;
s1, s2 si riferiranno entrambi all'oggetto String "Hello".
Cos'è StringBuffer in Java?
La classe StringBuffer viene utilizzata per rendere mutabili gli oggetti String. Pertanto, questi oggetti possono essere modificati. StringBuffer definisce quattro costruttori. StringBuffer (), StringBuffer (int size), StringBuffer (String str), StringBuffer (charSequence ch)
Fare riferimento al codice di seguito, StringBuffer s1 = nuovo 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, "World" viene aggiunto allo stesso oggetto String "Hello".
Gli oggetti String creati con la classe StringBuffer possono risparmiare memoria. StringBuffer fornisce la sicurezza del thread perché due thread non possono accedere allo stesso metodo nella classe StringBuffer contemporaneamente. La sicurezza dei thread riduce le prestazioni di StringBuffer. La classe StringBuffer contiene metodi come append (), insert (), reverse (), replace ().
Cos'è StringBuilder in Java?
La classe StringBuilder viene utilizzata per rendere mutabili gli oggetti String. Pertanto, questi oggetti possono essere modificati. La funzionalità è simile a StringBuffer, ma non fornisce la sicurezza dei thread. StringBuilder ha costruttori come StringBuilder (), StringBuilder (int size), StringBuilder (String str).
Fare riferimento al codice seguente.
StringBuilder s1 = nuovo 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, "World" viene aggiunto allo stesso oggetto String "Hello". Non è prevista la creazione di un oggetto String completamente nuovo.
Gli oggetti stringa creati con la classe StringBuilder possono risparmiare memoria. A differenza di StringBuffer, StringBuilder non fornisce thread safety perché due thread possono accedere allo stesso metodo nella classe StringBuilder contemporaneamente. La classe StringBuilder contiene metodi come append (), insert (), reverse (), replace ().
Qual è la somiglianza tra String, StringBuffer e StringBuilder in Java?
Tutti possono essere usati per creare stringhe
Qual è la differenza tra String StringBuffer e StringBuilder in Java?
Articolo diff. Al centro prima della tabella
String vs StringBuffer vs StringBuilder |
|
Corda | La stringa è una classe Java utilizzata per creare un oggetto di tipo String, che è una sequenza di caratteri. |
StringBuffer | StringBuffer è una classe Java utilizzata per creare oggetti String, che possono essere modificati con thread safety. |
StringBuilder | StringBuilder è una classe utilizzata per creare oggetti stringa, che possono essere modificati senza thread safety. |
Mutabilità | |
Corda | La stringa è una classe immutabile. |
StringBuffer | StringBuffer è una classe mutabile. |
StringBuilder | StringBuilder è una classe mutabile. |
Sicurezza del filo | |
Corda | I metodi di String sono thread-safe. |
StringBuffer | I metodi di StringBuffer sono thread-safe e sincronizzati. |
StringBuilder | I metodi di StringBuilder non sono threaded safe e non sono sincronizzati. |
Prestazione | |
Corda | La corda è veloce. |
StringBuffer | StringBuffer è lento. |
StringBuilder | StringBuilder è veloce. |
Riepilogo: String vs StringBuffer vs StringBuilder in Java
String, StringBuffer e StringBuilder sembrano essere la stessa cosa, 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 insieme di caratteri, StringBuffer è una classe che viene utilizzata per modificare le stringhe e fornire la sicurezza del thread, mentre StringBuilder è un classe utilizzata per modificare le stringhe che non forniscono la sicurezza dei thread.
Scarica PDF String vs StringBuffer vs StringBuilder in Java
È possibile scaricare la versione PDF di questo articolo e utilizzarla per scopi offline come da nota di citazione. Si prega di scaricare la versione PDF qui Differenza tra String StringBuffer e StringBuilder in Java