Diferencia entre StringBuffer y StringBuilder en Java

Las strings en Java son los objetos que están respaldados internamente por una array de caracteres. Dado que las arrays son inmutables (no pueden crecer), las strings también son inmutables. Cada vez que se realiza un cambio en una String, se crea una String completamente nueva. Sin embargo, java proporciona múltiples clases a través de las cuales se pueden usar strings. Dos de estas clases son StringBuffer y StringBuilder. En este artículo, veremos la diferencia entre ambas clases.

Difference-between-StringBuffer-and-StringBuilder-in-Java

Clase StringBuffer : StringBuffer es una clase par de String que proporciona gran parte de la funcionalidad de las strings. La string representa secuencias de caracteres inmutables de longitud fija, mientras que StringBuffer representa secuencias de caracteres modificables y modificables. StringBuffer puede tener caracteres y substrings insertadas en el medio o añadidas al final. Crecerá automáticamente para hacer espacio para tales adiciones y, a menudo, tiene más caracteres preasignados de los que realmente se necesitan, para permitir el crecimiento. Para crear un búfer de string, se debe crear un objeto, (es decir), si deseamos crear un nuevo búfer de string con el nombre str, entonces:

StringBuffer str = new StringBuffer();

Ejemplo: El siguiente es un ejemplo que implementa la clase StringBuffer.

// Java program to demonstrate
// the StringBuffer class
  
public class GFG {
  
    // Driver code
    public static void main(String args[])
    {
  
        // Creating a new StringBuffer
        StringBuffer str
            = new StringBuffer("Hello");
  
        str.append(" World!");
  
        System.out.println(str);
    }
}
Producción:

Hello World!

Clase StringBuilder : similar a StringBuffer, StringBuilder en Java representa una secuencia mutable de caracteres. Dado que String Class en Java crea una secuencia inmutable de caracteres, la clase StringBuilder proporciona una alternativa a String Class, ya que crea una secuencia mutable de caracteres. La función de StringBuilder es muy similar a la clase StringBuffer, ya que ambos proporcionan una alternativa a String Class al crear una secuencia mutable de caracteres. Similar a StringBuffer, para crear una nueva string con el nombre str, necesitamos crear un objeto de StringBuilder, (es decir):

StringBuilder str = new StringBuilder(); 

Ejemplo: El siguiente es un ejemplo que implementa la clase StringBuilder.

// Java program to demonstrate
// the StringBuilder class
  
public class GFG {
  
    // Driver code
    public static void main(String args[])
    {
  
        // Creating a new StringBuilder
        StringBuilder str
            = new StringBuilder("Hello");
  
        str.append(" World!");
  
        System.out.println(str);
    }
}
Producción:

Hello World!

Conversión de StringBuffer a StringBuilder

El StringBuffer no se puede convertir directamente a StringBuilder. Primero necesitamos convertir el StringBuffer en un objeto String usando el método incorporado toString() . Después de convertirlo en un objeto de string, simplemente podemos crear un StringBuilder usando el constructor de la clase. Por ejemplo:

// Java program to demonstrate
// the conversion between the
// StringBuffer and StringBuilder
// class
  
public class GFG {
  
    // Driver code
    public static void main(String args[])
    {
        StringBuffer sbr
            = new StringBuffer("Geeks");
  
        // Conversion from StringBuffer
        // object to the String object
        String str = sbr.toString();
  
        // Creating a new StringBuilder
        // using the constructor
        StringBuilder sbl
            = new StringBuilder(str);
  
        System.out.println(sbl);
    }
}
Producción:

Geeks

Conversión de StringBuilder a StringBuffer

Similar a la conversión anterior, StringBuilder no se puede convertir directamente a StringBuffer. Primero necesitamos convertir el StringBuilder al objeto String usando el método incorporado toString() . Ahora, podemos crear un StringBuilder usando el constructor. Por ejemplo:

// Java program to demonstrate
// the conversion between the
// StringBuilder and StringBuffer
// class
  
public class GFG {
  
    // Driver code
    public static void main(String args[])
    {
        StringBuilder sbr
            = new StringBuilder("Geeks");
  
        // Conversion from StringBuilder
        // object to the String object
        String str = sbr.toString();
  
        // Creating a new StringBuffer
        // using the constructor
        StringBuffer sbl
            = new StringBuffer(str);
  
        System.out.println(sbl);
    }
}
Producción:

Geeks

StringBuilder frente a StringBuffer en Java

Clase StringBuffer Clase StringBuilder
StringBuffer está presente en Java. StringBuilder se introdujo en Java 5.
StringBuffer está sincronizado. Esto significa que varios subprocesos no pueden llamar a los métodos de StringBuffer simultáneamente. StringBuilder está asincronizado. Esto significa que varios subprocesos pueden llamar a los métodos de StringBuilder simultáneamente.
Debido a la sincronización, StringBuffer se denomina clase segura para subprocesos. Debido a su naturaleza asincrónica, StringBuilder no es una clase segura para subprocesos.
Debido a la sincronización, StringBuffer es mucho más lento que StringBuilder. Dado que no existe una verificación preliminar para varios subprocesos, StringBuilder es mucho más rápido que StringBuffer.

Publicación traducida automáticamente

Artículo escrito por KaashyapMSK y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *