Diferencia entre String StringBuffer y StringBuilder en Java

Diferencia clave - Cadena vs StringBuffer vs StringBuilder en Java
 

String, StringBuffer y String Builder son clases en Java. La cadena es ampliamente utilizada en la programación de Java. Una vez que se crea un objeto de String, no es posible cambiarlos. Cada vez que se produce un cambio en la cadena, se crea una nueva cadena. Incluso si es una concatenación a una cadena existente, crea una nueva cadena. Esto causa pérdida de memoria. Las clases StringBuffer y StringBuilder en Java se utilizan para modificar String. los diferencia clave entre String, StringBuffer y StringBuilder en Java es que String es una clase para crear un objeto de tipo String que es una secuencia de caracteres, StringBuffer es una clase que se usa para modificar Strings que proporciona seguridad para subprocesos, y StringBuilder es una clase que se usa para modificar Strings que no proporcionan seguridad para subprocesos.

CONTENIDO

1. Resumen y diferencia clave
2. Qué es String en Java
3. Qué es StringBuffer en Java
4. Qué es StringBuilder en Java
5. Similitudes entre String StringBuffer y StringBuilder en Java
6. Comparación lado a lado: String vs StringBuffer vs StringBuilder en Java en forma tabular
7. Resumen

Qué es String en Java?

La clase de cadena está en el paquete java.lang. Cada vez que el programador crea un String, es un objeto de tipo String. Las cadenas tienen un significado inmutable una vez que se crea el objeto, no se puede cambiar. Los objetos creados con clases de envoltorio como Integer, Byte, Float, Double también son inmutables. Un literal de cadena se incluye entre comillas dobles. p.ej. "Hola Mundo". Cada vez que se crea un literal de cadena, la máquina virtual de Java (JVM) comprueba el conjunto de constantes de cadena. Si el String existe, se devuelve una referencia al conjunto de constantes de String. Si es una nueva Cadena, ese objeto se crea en el conjunto de constantes de Cadena.

Figura 01: programa Java que usa String, StringBuffer y StringBuilder

Consulte la siguiente pieza de código.

Cadena s1 = "Hola";

s1 = s1 + "Mundo";

System.out.println (s1);

En la primera declaración, s1 se refiere al "Hola" en el conjunto de constantes de String. En la segunda declaración, JVM no cambia la cadena existente. En su lugar, crea una nueva Cadena como "Hello World" y s1 ahora se refiere a esa nueva Cadena. El objeto "Hello" saliente todavía existe en el conjunto de constantes de cadena.

Si hay un código que es,

Cadena s1 = "Hola";

Cadena s2 = s1;

s1, s2 se referirán al objeto String "Hola".

Qué es StringBuffer en Java?

La clase StringBuffer se usa para hacer que los objetos String sean mutables. Por lo tanto, esos objetos pueden ser modificados. StringBuffer define cuatro constructores. StringBuffer (), StringBuffer (tamaño int), StringBuffer (String str), StringBuffer (charSequence [] ch)

Consulte el código a continuación,

StringBuffer s1 = new StringBuffer ("Hola");

s1.append ("Mundo");

System.out.println (s1);

En la declaración 1, s1 se refiere al objeto "Hola" en un montón. El objeto es mutable porque se crea utilizando StringBuffer. En la declaración 2, "Mundo" se anexa al mismo objeto de cadena "Hola".

Los objetos de cadena creados con la clase StringBuffer pueden ahorrar memoria. StringBuffer proporciona seguridad de subprocesos porque dos subprocesos no pueden acceder al mismo método en la clase StringBuffer simultáneamente. Seguridad del hilo disminuye el rendimiento del StringBuffer. La clase StringBuffer contiene métodos como append (), insert (), reverse (), replace ().

Qué es StringBuilder en Java?

La clase StringBuilder se usa para hacer que los objetos String sean mutables. Por lo tanto, esos objetos pueden ser modificados. La funcionalidad es similar a StringBuffer, pero esto no proporciona seguridad para subprocesos. StringBuilder tiene constructores como StringBuilder (), StringBuilder (tamaño int), StringBuilder (String str).

Consulte el siguiente código.

StringBuilder s1 = new StringBuilder ("Hola");

s1.append ("Mundo");

System.out.println (s1);

En la declaración 1, s1 se refiere al objeto "Hola" en un montón. El objeto es mutable porque se crea utilizando StringBuilder. En la declaración 2, "Mundo" se anexa al mismo objeto de cadena "Hola". No hay creación de un objeto String completamente nuevo..

Los objetos de cadena creados con la clase StringBuilder pueden ahorrar memoria. A diferencia de StringBuffer, StringBuilder no proporciona seguridad de subprocesos porque dos subprocesos pueden acceder al mismo método en la clase StringBuilder simultáneamente. La clase StringBuilder contiene métodos como append (), insert (), reverse (), replace ().

¿Cuál es la similitud entre String, StringBuffer y StringBuilder en Java??

  • Todo se puede utilizar para crear cadenas..

¿Cuál es la diferencia entre String StringBuffer y StringBuilder en Java??

String vs StringBuffer vs StringBuilder

Cuerda La cadena es una clase de Java que se utiliza para crear un objeto de tipo Cadena, que es una secuencia de caracteres..
StringBuffer StringBuffer es una clase Java que se utiliza para crear objetos String, que se pueden modificar con seguridad de subprocesos.
StringBuilder StringBuilder es una clase que se utiliza para crear objetos de cadena, que se pueden modificar sin seguridad de subprocesos.
Mutabilidad
Cuerda La cadena es una clase inmutable..
StringBuffer StringBuffer es una clase mutable.
StringBuilder StringBuilder es una clase mutable.
Seguridad del hilo
Cuerda Métodos de cadena son hilo seguro.
StringBuffer Los métodos de StringBuffer son seguros para subprocesos y están sincronizados.
StringBuilder Los métodos de StringBuilder no son seguros y no están sincronizados.
Actuación
Cuerda La cuerda es rapida.
StringBuffer StringBuffer es lento.
StringBuilder StringBuilder es rápido.

Resumen - Cadena vs StringBuffer vs StringBuilder en Java 

String, StringBuffer y StringBuilder parecen ser los mismos, pero tienen diferentes significados. Todas estas son clases de Java. La diferencia entre String, StringBuffer y StringBuilder en Java es que, String es una clase para crear un objeto de tipo String, que es un conjunto de caracteres, StringBuffer es una clase que se utiliza para modificar Strings y proporcionar seguridad para subprocesos, mientras que StringBuilder es un Clase que se utiliza para modificar cadenas que no proporciona seguridad de subprocesos.

Descargue el archivo PDF String vs StringBuffer vs StringBuilder en Java

Puede descargar la versión en PDF de este artículo y usarla para fines fuera de línea, como se indica en la nota de cita. Por favor descargue la versión PDF aquí Diferencia entre StringBuffer y StringBuilder en Java

Referencia:

1. “String vs StringBuffer vs StringBuilder”. JournalDev, 30 de julio de 2017. Disponible aquí
2. "Java Hungry". Diferencia entre String, StringBuilder y StringBuffer Classes con Ejemplo: Java | Java Hungry. Disponible aquí 
3.tutorialspoint.com. "Java Strings". El puntoDisponible aquí