Aquí hay un conjunto de diagramas para ilustrar las cadenas de Java inmutabilidad.
1. Declare una cadena
El siguiente código inicializa una cadena s.
String s = "abcd"; |
La variable s almacena la referencia de un objeto de cadena como se muestra a continuación. La flecha se puede interpretar como «almacenar referencia de».
2. Asignar una variable de cadena a otra variable de cadena
El siguiente código asigna s a s2.
String s2 = s; |
s2 almacena el mismo valor de referencia ya que es el mismo objeto de cadena.
3. Cadena Concat
Cuando concatenamos una cadena «ef» a s,
s = s.concat("ef"); |
s almacena la referencia del objeto de cadena recién creado como se muestra a continuación.
En resumen, una vez que se crea una cadena en la memoria (montón), no se puede cambiar. Los métodos de cadena no cambian la cadena en sí, sino que devuelven una nueva cadena.
Si necesitamos una cadena que se pueda modificar, necesitaremos StringBuffer o StringBuilder. De lo contrario, se perderá mucho tiempo para la recolección de basura, ya que cada vez que se crea una nueva cadena. Aquí hay un ejemplo de uso StringBuilder.