Nella programmazione orientata agli oggetti, il stringa o oggetti immutabili che non può essere modificato una volta creato. Ma possiamo solo cambiare il riferimento all'oggetto. Ci limitiamo a modificare l'oggetto stesso. IL La stringa è immutabile In Giava a causa della sicurezza, della sincronizzazione e della concorrenza, della memorizzazione nella cache e del caricamento delle classi. Lo scopo di rendere la stringa finale è distruggere l'immutabilità e non consentire ad altri di estenderla.
variabile Java variabile
Gli oggetti String vengono memorizzati nella cache nel pool String e rendono il file Stringa immutabile . Ai valori letterali String memorizzati nella cache accedono più client. Pertanto, esiste sempre il rischio che l'azione eseguita da un client influisca su tutti gli altri client. Ad esempio, se un client esegue un'azione e modifica il valore della stringa da Pressure a PRESSURE, anche tutti i client rimanenti leggeranno quel valore. Per motivi di prestazioni, la memorizzazione nella cache degli oggetti String era importante, quindi per rimuovere questo rischio dobbiamo rendere la String immutabile.
Questi sono alcuni altri motivi per rendere String immutabile:
- Il pool di stringhe non può essere possibile se String non è immutabile in Java. Viene risparmiato molto spazio heap JRE . È possibile fare riferimento alla stessa variabile stringa da più di una variabile stringa nel pool. Anche l'internamento delle stringhe non può essere possibile se la stringa non fosse immutabile.
- Se non rendiamo immutabile la stringa, rappresenterà una seria minaccia alla sicurezza dell'applicazione. Ad esempio, i nomi utente del database e le password vengono passati come stringhe per ricevere connessioni al database. IL programmazione della presa anche le descrizioni di host e porta vengono passate come stringhe. La stringa è immutabile, quindi il suo valore non può essere modificato. Se la stringa non rimane immutabile, qualsiasi hacker può causare un problema di sicurezza nell'applicazione modificando il valore di riferimento.
- La stringa è sicura per il multithreading a causa della sua immutabilità. Diversi thread possono accedere a una singola 'istanza String'. Rimuove la sincronizzazione per la sicurezza del thread perché rendiamo implicitamente le stringhe thread-safe.
- L'immutabilità offre la sicurezza di caricare la classe corretta tramite Classloader. Ad esempio, supponiamo di avere un'istanza in cui proviamo a caricare la classe java.sql.Connection ma le modifiche nel valore di riferimento della classe myhacked.Connection fanno cose indesiderate al nostro database.
Capiamo il concetto di immutabile attraverso un esempio.
ImmutableString.java
quale raccolta in Java
import java.util.*; class ImmutableString{ public static void main(String args[]){ String NewString = 'Hello'; NewString.concat('World'); System.out.println(NewString); } }
Produzione:
Descrizione: Possiamo comprendere l'esempio sopra con l'aiuto del seguente diagramma:
Nel pool costante di stringhe, the Ciao rimane invariato e viene creato un nuovo oggetto stringa con Ciao mondo . Mostra che le stringhe sono immutabili. La variabile di riferimento punta a Ciao non al Ciao mondo.
dormire per Javascript
Se vogliamo che si riferisca a Ciao mondo , dobbiamo assegnarlo esplicitamente a quella variabile. Per esempio:
import java.util.*; class ImmutableString{ public static void main(String args[]){ String NewString = 'Hello'; NewString = NewString.concat('World'); System.out.println(NewString); } }
Produzione: