logo

Stringa immutabile in Java

Una stringa è un tipo di variabile inevitabile durante la scrittura di qualsiasi programma applicativo. I riferimenti a stringhe vengono utilizzati per memorizzare vari attributi come nome utente, password, ecc. In Java, Gli oggetti stringa sono immutabili . Immutabile significa semplicemente immodificabile o immutabile.

Una volta creato l'oggetto String, i suoi dati o il suo stato non possono essere modificati ma viene creato un nuovo oggetto String.

Proviamo a comprendere il concetto di immutabilità con l'esempio riportato di seguito:

k algoritmo del vicino più vicino

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 } } 
Provalo adesso

Produzione:

 Sachin 

Ora può essere compreso dal diagramma riportato di seguito. Qui Sachin non viene modificato ma viene creato un nuovo oggetto con Sachin Tendulkar. Ecco perché String è conosciuta come immutabile.

Stringa immutabile in Java

Come puoi vedere nella figura sopra, vengono creati due oggetti ma S la variabile di riferimento si riferisce ancora a 'Sachin' e non a 'Sachin Tendulkar'.

Ma se lo assegniamo esplicitamente alla variabile di riferimento, si riferirà all'oggetto 'Sachin Tendulkar'.

Per esempio:

Testimmutablestring1.java

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

Produzione:

 Sachin Tendulkar 

In tal caso, s indica il 'Sachin Tendulkar'. Si prega di notare che l'oggetto Sachin non viene ancora modificato.

Perché gli oggetti String sono immutabili in Java?

Poiché Java utilizza il concetto di String letterale. Supponiamo che ci siano 5 variabili di riferimento, tutte si riferiscono a un oggetto 'Sachin'. Se una variabile di riferimento modifica il valore dell'oggetto, sarà influenzata da tutte le variabili di riferimento. Ecco perché gli oggetti String sono immutabili in Java.

sostituzione della stringa in Java

Di seguito sono riportate alcune funzionalità di String che rendono immutabili gli oggetti String.

1. Caricatore di classi:

Un ClassLoader in Java utilizza un oggetto String come argomento. Considera, se l'oggetto String è modificabile, il valore potrebbe essere modificato e la classe che dovrebbe essere caricata potrebbe essere diversa.

Per evitare questo tipo di interpretazione errata, String è immutabile.

2. Filettatura sicura:

Poiché l'oggetto String è immutabile, non dobbiamo occuparci della sincronizzazione richiesta durante la condivisione di un oggetto su più thread.

3. Sicurezza:

Come abbiamo visto nel caricamento della classe, gli oggetti String immutabili evitano ulteriori errori caricando la classe corretta. Ciò porta a rendere il programma applicativo più sicuro. Consideriamo un esempio di software bancario. Il nome utente e la password non possono essere modificati da nessun intruso perché gli oggetti String sono immutabili. Ciò può rendere il programma applicativo più sicuro.

4. Spazio nell'heap:

L'immutabilità di String aiuta a ridurre al minimo l'utilizzo della memoria heap. Quando proviamo a dichiarare un nuovo oggetto String, la JVM controlla se il valore esiste già nel pool String o meno. Se esiste, al nuovo oggetto viene assegnato lo stesso valore. Questa funzionalità consente a Java di utilizzare lo spazio heap in modo efficiente.

Perché la classe String è Final in Java?

Il motivo per cui la classe String è definitiva è perché nessuno può sovrascrivere i metodi della classe String. In modo che possa fornire le stesse funzionalità ai nuovi oggetti String così come a quelli vecchi.