logo

Diferència entre StringBuffer i StringBuilder

Java proporciona tres classes per representar una seqüència de caràcters: String, StringBuffer i StringBuilder. La classe String és una classe immutable mentre que les classes StringBuffer i StringBuilder són mutables. Hi ha moltes diferències entre StringBuffer i StringBuilder. La classe StringBuilder s'introdueix des del JDK 1.5.

A continuació es mostra una llista de diferències entre StringBuffer i StringBuilder:

Diferència entre StringBuffer i StringBuilder
No.StringBufferStringBuilder
1)StringBuffer és sincronitzat és a dir, sense fil. Significa que dos fils no poden cridar els mètodes de StringBuffer simultàniament.StringBuilder és no sincronitzat és a dir, no és segur per a fils. Significa que dos fils poden cridar els mètodes de StringBuilder simultàniament.
2)StringBuffer és menys eficient que StringBuilder.StringBuilder és més eficient que StringBuffer.
3)StringBuffer es va introduir a Java 1.0StringBuilder es va introduir a Java 1.5

Exemple de StringBuffer

BufferTest.java

// Programa Java per demostrar l'ús de la classe StringBuffer. classe pública BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hola'); buffer.append('java'); System.out.println(buffer); } }

Sortida:

 hellojava 

Exemple de StringBuilder

BuilderTest.java

verilog sempre
 //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); } } 

Sortida:

 hellojava 

Prova de rendiment de StringBuffer i StringBuilder

Vegem el codi per comprovar el rendiment de les classes StringBuffer i 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;>