logo

Differenza tra StringBuffer e StringBuilder

Java fornisce tre classi per rappresentare una sequenza di caratteri: String, StringBuffer e StringBuilder. La classe String è una classe immutabile mentre le classi StringBuffer e StringBuilder sono mutabili. Esistono molte differenze tra StringBuffer e StringBuilder. La classe StringBuilder è stata introdotta a partire da JDK 1.5.

Di seguito è riportato un elenco delle differenze tra StringBuffer e StringBuilder:

Differenza tra StringBuffer e StringBuilder
NO.StringBufferStringBuilder
1)StringBuffer è sincronizzato cioè thread-safe. Significa che due thread non possono chiamare contemporaneamente i metodi di StringBuffer.StringBuilder lo è non sincronizzato cioè non thread-safe. Significa che due thread possono chiamare simultaneamente i metodi di StringBuilder.
2)StringBuffer è meno efficiente rispetto a StringBuilder.StringBuilder lo è più efficiente rispetto a StringBuffer.
3)StringBuffer è stato introdotto in Java 1.0StringBuilder è stato introdotto in Java 1.5

Esempio di StringBuffer

BufferTest.java

//Programma Java per dimostrare l'uso della classe StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('ciao'); buffer.append('java'); System.out.println(buffer); } }

Produzione:

 hellojava 

Esempio di StringBuilder

BuilderTest.java

convertire l'oggetto Java in JSON
 //Java Program to demonstrate the use of StringBuilder class. public class BuilderTest{ public static void main(String[] args){ StringBuilder builder=new StringBuilder('hello'); builder.append('java'); System.out.println(builder); } } 

Produzione:

 hellojava 

Test delle prestazioni di StringBuffer e StringBuilder

Vediamo il codice per verificare le prestazioni delle classi StringBuffer e StringBuilder.

ConcatTest.java

 //Java Program to demonstrate the performance of StringBuffer and StringBuilder classes. public class ConcatTest{ public static void main(String[] args){ long startTime = System.currentTimeMillis(); StringBuffer sb = new StringBuffer(&apos;Java&apos;); for (int i=0; i<10000; i++){ sb.append('tpoint'); } system.out.println('time taken by stringbuffer: ' + (system.currenttimemillis() - starttime) 'ms'); starttime="System.currentTimeMillis();" stringbuilder sb2="new" stringbuilder('java'); for (int i="0;" i<10000; sb2.append('tpoint'); stringbuilder: < pre> <p> <strong>Output:</strong> </p> <pre> Time taken by StringBuffer: 16ms Time taken by StringBuilder: 0ms </pre> <hr></10000;>