logo

Cadena inmutable en Java

Una cadena es un tipo de variable inevitable al escribir cualquier programa de aplicación. Las referencias de cadenas se utilizan para almacenar varios atributos como nombre de usuario, contraseña, etc. En Java, Los objetos de cadena son inmutables. . Inmutable simplemente significa inmodificable o inmutable.

Una vez que se crea el objeto String, sus datos o estado no se pueden cambiar, pero se crea un nuevo objeto String.

Intentemos comprender el concepto de inmutabilidad con el ejemplo que se da a continuación:

Testimmutablestring.java

 class Testimmutablestring{ public static void main(String args[]){ String s='Sachin'; s.concat(' Tendulkar');//concat() method appends the string at the end System.out.println(s);//will print Sachin because strings are immutable objects } } 
Pruébalo ahora

Producción:

cómo encontrar cosas ocultas en Android
 Sachin 

Ahora se puede entender mediante el diagrama que figura a continuación. Aquí Sachin no se cambia pero se crea un nuevo objeto con Sachin Tendulkar. Por eso se conoce a String como inmutable.

Cadena inmutable en Java

Como puede ver en la figura anterior, se crean dos objetos pero s La variable de referencia todavía se refiere a 'Sachin', no a 'Sachin Tendulkar'.

Pero si lo asignamos explícitamente a la variable de referencia, se referirá al objeto 'Sachin Tendulkar'.

Por ejemplo:

Testimmutablestring1.java

 class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } } 
Pruébalo ahora

Producción:

 Sachin Tendulkar 

En tal caso, s apunta al 'Sachin Tendulkar'. Tenga en cuenta que el objeto Sachin aún no se modifica.

¿Por qué los objetos String son inmutables en Java?

Como Java utiliza el concepto de cadena literal. Supongamos que hay 5 variables de referencia, todas se refieren a un objeto 'Sachin'. Si una variable de referencia cambia el valor del objeto, se verá afectado por todas las variables de referencia. Por eso los objetos String son inmutables en Java.

A continuación se muestran algunas características de String que hacen que los objetos String sean inmutables.

1. Cargador de clases:

Un ClassLoader en Java utiliza un objeto String como argumento. Considere que si el objeto String es modificable, el valor podría cambiarse y la clase que se supone que debe cargarse podría ser diferente.

lista enlazada

Para evitar este tipo de mala interpretación, String es inmutable.

2. Seguridad para subprocesos:

Como el objeto String es inmutable, no tenemos que encargarnos de la sincronización necesaria al compartir un objeto entre varios subprocesos.

3. Seguridad:

Como hemos visto en la carga de clases, los objetos String inmutables evitan más errores al cargar la clase correcta. Esto conduce a hacer que el programa de aplicación sea más seguro. Considere un ejemplo de software bancario. Ningún intruso puede modificar el nombre de usuario y la contraseña porque los objetos String son inmutables. Esto puede hacer que el programa de aplicación sea más seguro.

4. Espacio del montón:

estructuras de datos en java

La inmutabilidad de String ayuda a minimizar el uso de la memoria del montón. Cuando intentamos declarar un nuevo objeto String, la JVM comprueba si el valor ya existe en el grupo de String o no. Si existe, se asigna el mismo valor al nuevo objeto. Esta característica permite a Java utilizar el espacio del montón de manera eficiente.

¿Por qué la clase String es final en Java?

La razón por la que la clase String es definitiva es porque nadie puede anular los métodos de la clase String. Para que pueda proporcionar las mismas características a los nuevos objetos String y a los antiguos.