Recomendado, 2024

La Elección Del Editor

Diferencia entre String y StringBuffer Class en Java

String y StringBuffer son las dos clases que operan en cadenas. StringBuffer class es la clase peer 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" mutable .

Gráfica comparativa

Bases para la comparaciónCuerdaStringBuffer
BASICLa longitud del objeto String es fija.La longitud del StringBuffer se puede aumentar.
ModificaciónObjeto 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.
AlmacenamientoCadena constante de la piscina.Memoria del montón

Definición de cuerda

"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 conjunto de constantes String.

Primero entendamos eso, siempre que crees cualquier cadena; se crea un objeto de tipo cadena. Las constantes de cadena también son objetos de cadena.

 System.out.println ("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 entendamos la mutabilidad del objeto String con la ayuda de un ejemplo.

 String str = new String ("Teckpix"); str.concat ("Solución"); system.out.println (str); // salida de Teckpix 

En el código anterior, traté de concatenar las dos cadenas "Teckpix" y "Solución". 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 una "Solución" de otra cadena con la cadena "Teckpix" usando el método "concat ()" de la clase String.

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 de constantes de cadena. Pero, la referencia al objeto "Solución" no es capturada por ningún objeto, por lo tanto, la referencia a la Solución del objeto se pierde aunque todavía está presente en el conjunto de constantes de cadena. Como no se realiza ninguna modificación en el objeto Teckpix, cuando imprimo la cadena de objeto a la que asigné la referencia de Teckpix anteriormente, solo se imprimirá la cadena "Teckpix".

Definición de StringBuffer

La clase "StringBuffer" es la clase 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 se puede modificar. La longitud del objeto StringBuffer es ampliable. Puede insertar los caracteres o las subcadenas en el medio de la cadena literal que se asigna al objeto StringBuffer o al final de la misma. StringBuffer asigna espacio para 16 caracteres adicionales cuando no se solicita una longitud específica.

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

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

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 la nueva cadena literal "Solución", al final de la cadena literal "Teckpix". Ahora, cuando imprima el objeto Sb, imprimirá el objeto de cadena modificado "Soluciones Teckpix".

Diferencia clave entre String y StringBuffer

  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 de nuevo, 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.

Top