Perché la stringa è immutabile in Java è una delle domande più popolari nei colloqui. La stringa è una delle classi più utilizzate in qualsiasi linguaggio di programmazione. Sappiamo che la stringa è immutabile e finale in Java. Il runtime di Java mantiene una pool di stringhe che la rende una classe speciale.
Perché la stringa è immutabile in Java?
Vediamo alcuni dei benefici dell’immutabilità della stringa, che ci aiuteranno a capire perché la stringa è immutabile in Java.
- La pool di stringhe è possibile solo perché la stringa è immutabile in Java. In questo modo, il runtime di Java risparmia molto spazio nell’heap perché diverse variabili di stringhe possono fare riferimento alla stessa variabile di stringa nella pool. Se la stringa non fosse stata immutabile, l’internamento delle stringhe non sarebbe stato possibile perché se una variabile avesse cambiato il valore, sarebbe stato riflesso anche nelle altre variabili.
- Se la stringa non è immutabile, causerebbe una grave minaccia alla sicurezza dell’applicazione. Ad esempio, il nome utente e la password del database vengono passati come String per ottenere la connessione al database e nel programma di socket vengono passati dettagli come host e porta come String. Poiché la stringa è immutabile, il suo valore non può essere cambiato altrimenti qualsiasi hacker potrebbe modificare il valore referenziato per causare problemi di sicurezza nell’applicazione.
- Poiché la stringa è immutabile, è sicura per il multithreading. Una singola istanza di stringa può essere condivisa tra thread diversi. Questo evita l’uso della sincronizzazione per la sicurezza dei thread. Le stringhe sono implicitamente sicure per il thread.
- Le stringhe vengono utilizzate nel java classloader e l’immutabilità fornisce la sicurezza che la classe corretta venga caricata dal Classloader. Ad esempio, pensa a un’istanza in cui stai cercando di caricare la classe
java.sql.Connection
ma il valore referenziato viene cambiato inmyhacked.Connection
che potrebbe fare cose indesiderate al tuo database. - Poiché la stringa è immutabile, il suo codice hash è memorizzato nella cache al momento della creazione e non è necessario calcolarlo nuovamente. Questo lo rende un ottimo candidato per la chiave in una mappa e il suo processo è più veloce rispetto agli altri oggetti chiave di HashMap. Ecco perché la stringa è la più utilizzata come chiavi di HashMap.
Ecco alcune delle ragioni che posso pensare che dimostrano i benefici dell’immutabilità delle stringhe. È una grande caratteristica della classe Java String e la rende speciale. Leggi questo post per sapere come scrivere la tua classe immutabile.
Puoi trovare altri esempi di stringhe Java nel nostro Repository GitHub.
Source:
https://www.digitalocean.com/community/tutorials/string-immutable-final-java