Porque las variables String cambian?

Según algunos libros de texto y hasta el tutorial de sun Microsystem, las variables String no deben de cambiar. ¿En los programas que yo tengo utilizo variables String y para comprobar lo dicho anteriormente le cambio el valor a la variable String y si cambia de valor sin ningún error de compilación ni de ejecución y se obtiene los resultados esperados del programa? Entonces que es lo correcto. ¿Se deben de cambiar o no cambian las variables String? Se que para eso están las StringBuffer, las usaba antes pero si las String se pueden cambiar entonces ya no usare las StringBuffer. Agradecería mucho su ayuda...

1 respuesta

Respuesta
1
Creo que te estás confundiendo en el concepto.
El valor de una variable String es inmutable, a eso creo que se refieren en los libros que hayas visto. Pero eso es el valor de la variable. La variable en sí (como su propio nombre indica) puede variar de valor. Lo que estás cambiando es el valor que contiene la variable, sustituyendo el antiguo, que era inmutable.
En cambio el valor de un StringBuffer está diseñado para cambiar, y sobre todo para crecer.
Se entenderá mejor con unos ejemplos:
String miString= "hola";
La cadena "hola" ya no puede cambiar. Si ahora haces:
miString = miString + " mundo"; (o miString+=" mundo")
No estás cambiando la cadena "hola". Has construido una cadena "hola mundo" que has metido en la variable miString, perdiendo el valor anterior. Lo que ha cambiado es la variable.
En cambio:
StringBuffer miStringBuffer = "hola";
MiStringBuffer. Append(" mundo"); // Este metodo es una de las ventajas de StringBuffer
Aquí la cadena "hola" ha crecido hasta "hola mundo". Porque las variables StringBuffer están diseñadas para ser modificadas (incluso tienen espacio libre ya designado para crecer).
Aunque el resultado ha sido el mismo, el segundo caso ha sido menos costoso para Java y el sistema.
Conclusión: Se utilizan variables String como cualquier otra variable (Integer,...) que guarda un valor que no va a ser modificado, sino sustituido por otro. Y se usan StringBuffer para tener una cadena que queramos modificar (sobre todo ir ampliando)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas