logo

Cadena immutable en Java

Una cadena és un tipus de variable inevitable mentre s'escriu qualsevol programa d'aplicació. Les referències de cadena s'utilitzen per emmagatzemar diversos atributs com el nom d'usuari, la contrasenya, etc. A Java, Els objectes de cadena són immutables . Immutable significa simplement inmodificable o inalterable.

Un cop creat l'objecte String, les seves dades o estat no es poden canviar, però es crea un nou objecte String.

Intentem entendre el concepte d'immutabilitat amb l'exemple que es dóna a continuació:

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 } } 
Prova-ho ara

Sortida:

 Sachin 

Ara es pot entendre amb el diagrama que es mostra a continuació. Aquí Sachin no es modifica, sinó que es crea un objecte nou amb Sachin Tendulkar. És per això que String es coneix com a immutable.

Cadena immutable en Java

Com podeu veure a la figura anterior que es creen dos objectes però s la variable de referència encara es refereix a 'Sachin' no a 'Sachin Tendulkar'.

quantes ciutats hi ha als Estats Units d'Amèrica

Però si l'assignem explícitament a la variable de referència, es referirà a l'objecte 'Sachin Tendulkar'.

Per exemple:

Testimmutablestring1.java

 class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } } 
Prova-ho ara

Sortida:

 Sachin Tendulkar 

En aquest cas, s apunta al 'Sachin Tendulkar'. Tingueu en compte que l'objecte Sachin encara no està modificat.

Per què els objectes String són immutables a Java?

Com Java utilitza el concepte de cadena literal. Suposem que hi ha 5 variables de referència, totes fan referència a un objecte 'Sachin'. Si una variable de referència canvia el valor de l'objecte, es veurà afectada per totes les variables de referència. És per això que els objectes String són immutables a Java.

exemple de classe java

A continuació es mostren algunes característiques de String que fan que els objectes String siguin immutables.

1. ClassLoader:

Un ClassLoader a Java utilitza un objecte String com a argument. Penseu que si l'objecte String és modificable, el valor es podria canviar i la classe que se suposa que s'ha de carregar pot ser diferent.

Per evitar aquest tipus d'interpretació errònia, String és immutable.

2. Thread Safe:

Com que l'objecte String és immutable, no hem de tenir cura de la sincronització que es requereix mentre compartim un objecte en diversos fils.

3. Seguretat:

Com hem vist a la càrrega de classes, els objectes String immutables eviten més errors carregant la classe correcta. Això fa que el programa d'aplicació sigui més segur. Considereu un exemple de programari bancari. Cap intrús no pot modificar el nom d'usuari i la contrasenya perquè els objectes String són immutables. Això pot fer que el programa d'aplicació sigui més segur.

que va fer escola

4. Espai de pila:

La immutabilitat de String ajuda a minimitzar l'ús a la memòria de pila. Quan intentem declarar un nou objecte String, la JVM comprova si el valor ja existeix al grup String o no. Si existeix, s'assigna el mateix valor al nou objecte. Aquesta característica permet que Java utilitzi l'espai dinàmic de manera eficient.

Per què la classe String és final a Java?

El motiu pel qual la classe String és definitiva és perquè ningú pot anul·lar els mètodes de la classe String. Perquè pugui proporcionar les mateixes característiques als nous objectes String així com als antics.