logo

Diferencia entre StringBuffer y StringBuilder

Java proporciona tres clases para representar una secuencia de caracteres: String, StringBuffer y StringBuilder. La clase String es una clase inmutable, mientras que las clases StringBuffer y StringBuilder son mutables. Existen muchas diferencias entre StringBuffer y StringBuilder. La clase StringBuilder se introduce desde JDK 1.5.

A continuación se proporciona una lista de diferencias entre StringBuffer y StringBuilder:

Diferencia entre StringBuffer y StringBuilder
No.búfer de cadenaConstructor de cadenas
1)StringBuffer es sincronizado es decir, seguro para subprocesos. Significa que dos subprocesos no pueden llamar a los métodos de StringBuffer simultáneamente.StringBuilder es no sincronizado es decir, no es seguro para subprocesos. Significa que dos subprocesos pueden llamar a los métodos de StringBuilder simultáneamente.
2)StringBuffer es menos eficiente que StringBuilder.StringBuilder es más eficiente que StringBuffer.
3)StringBuffer se introdujo en Java 1.0StringBuilder se introdujo en Java 1.5

Ejemplo de StringBuffer

BufferTest.java

//Programa Java para demostrar el uso de la clase StringBuffer. clase pública BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hola'); buffer.append('java'); System.out.println(búfer); } }

Producción:

 hellojava 

Ejemplo de generador de cadenas

BuilderTest.java

comando de estiramiento de autocad
 //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); } } 

Producción:

 hellojava 

Prueba de rendimiento de StringBuffer y StringBuilder

Veamos el código para comprobar el rendimiento de las clases StringBuffer y 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;>