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:
No. | búfer de cadena | Constructor 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.0 | StringBuilder 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('Java'); 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;>
10000;>