Diferencia entre String y StringBuffer Class en Java

Autor: Laura McKinney
Fecha De Creación: 3 Abril 2021
Fecha De Actualización: 15 Mayo 2024
Anonim
JAVA: DIFERENCIAS ENTRE STRING, STRINGBUFFER Y STRINGBUILDER
Video: JAVA: DIFERENCIAS ENTRE STRING, STRINGBUFFER Y STRINGBUILDER

Contenido


String y StringBuffer son las clases que operan en cadenas. La clase StringBuffer es la clase par de la clase String. El objeto de la clase String es de longitud fija. El objeto de la clase StringBuffer es cultivable. La diferencia básica entre String y StringBuffer es que el objeto de la clase "String" es inmutable. El objeto de la clase "StringBuffer" mudable.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónCuerdaStringBuffer
BásicoLa longitud del objeto String es fija.La longitud del StringBuffer se puede aumentar.
ModificaciónEl objeto de cadena es inmutable.El objeto StringBuffer es mutable.
ActuaciónEs más lento durante la concatenación.Es más rápido durante la concatenación.
MemoriaConsume más memoria.Consume menos memoria.
AlmacenamientoConjunto de cadenas constante.Heap Memory.


Definición de cadena

"String" es una clase en Java. El objeto de la clase String es de longitud fija, y lo más importante para recordar, el objeto de la clase String es "inmutable". Una vez que inicializa el objeto String, no puede modificar ese objeto nuevamente. El objeto de la clase String se almacena en el grupo constante de String.

Primero, comprendamos eso, siempre que cree una cadena; crea un objeto de tipo cadena. Las constantes de cadena también son objetos de cadena.

System.out.ln ("Hola, esta es la solución Teckpix");

En la declaración anterior, la cadena "Hola, esta es la solución Teckpix" es una constante de cadena.

Ahora, comprendamos la mutabilidad del objeto String con la ayuda de un ejemplo.

String str = nueva cadena ("Teckpix"); str.concat ("Solución"); system.out.ln (str); // salida Teckpix

En el código anterior, traté de concatenar las dos cadenas "Teckpix" y "Solution". Como sabemos cada vez que se crea una cadena, eso significa que se crea el objeto de tipo Cadena. Por lo tanto, la cadena "Teckpix" crea un objeto, cuya referencia se asigna al objeto de cadena "str". Luego, traté de concatenar otra cadena "Solución" con la cadena "Teckpix" usando el método "concat ()" de la clase Cadena.


Como los objetos String son inmutables, no se realiza ninguna modificación en la cadena "Teckpix" y la nueva cadena "Solution" crea otro objeto en el grupo constante de cadenas. Sin embargo, la referencia al objeto "Solución" no es capturada por ningún objeto, por lo tanto, la referencia al objeto Solución se pierde aunque todavía está presente en el conjunto de cadenas constantes. Como no se realiza ninguna modificación al objeto Teckpix, cuando el objeto str al que asigné la referencia de Teckpix anteriormente, solo aparecerá la cadena "Teckpix".

Definición de StringBuffer

La clase "StringBuffer" es la clase par de la clase "String". La clase StringBuffer proporciona más funcionalidad a las cadenas. El objeto de la clase StringBuffer es mutable, es decir, su objeto puede modificarse. La longitud del objeto StringBuffer es ampliable. Puede insertar los caracteres o subcadenas en el medio del literal de cadena asignado al objeto StringBuffer o al final del mismo. StringBuffer asigna espacio para 16 caracteres adicionales cuando no se solicita una longitud específica.

Comprendamos la mutabilidad del objeto StringBuffer con la ayuda de un ejemplo:

StringBuffer Sb = new StringBuffer ("Teckpix"); Sb.append ("Solución"); system.out.ln (Sb); // Solución de salida de Teckpix

Como sabemos que el objeto StringBuffer es mutable. El método append () modifica el objeto StringBuffer Sb al que inicialmente, la referencia del objeto "Teckpix" se asigna anteriormente. El método append () agrega el nuevo literal de cadena "Solución", al final del literal de cadena "Teckpix". Ahora, cuando el objeto Sb será el objeto de cadena modificado "Teckpix Solutions".

  1. La longitud del objeto String es fija, pero la longitud de un objeto de StringBuffer se puede aumentar cuando sea necesario.
  2. El objeto String es inmutable, es decir, su objeto no se puede reasignar nuevamente, mientras que el objeto StringBuffer es mutable.
  3. El objeto String tiene un rendimiento más lento, mientras que el objeto StringBuffer es más rápido.
  4. El objeto String consume más memoria mientras que los objetos StringBuffer consumen menos memoria.
  5. Los objetos de cadena se almacenan en un grupo constante, mientras que los objetos de StringBuffer se almacenan en la memoria del montón.

Conclusión:

Los objetos StringBuffer proporcionan más funcionalidad a las cadenas en comparación con la clase String. Por lo tanto, es preferible trabajar con StringBuffer en lugar de la clase String.