Perché sono Java stringhe immutabile?

January 30

Perché sono Java stringhe immutabile?


Gli sviluppatori di Java progettato classe "String" come un oggetto immutabile. "Immutabile" significa che il valore della classe non può cambiare una volta il programmatore un'istanza dell'oggetto. Mentre sembrerebbe vantaggioso usare sempre un oggetto String che ha un valore variabile, alcune ragioni spiegano perché questo non è il caso. stringhe immutabili si prestano ad utilizzare nei programmi multi-threaded, aumentare la sicurezza del programma, ridurre al minimo l'utilizzo della memoria, e lavorare meglio come valori in strutture di dati, come tabelle hash.

Le stringhe nei programmi multi-threaded

I programmi sono chiamate multi-thread quando depongono le uova che sono conosciuti come "fili" che corrono codice contemporaneamente. Quando un programma genera più thread, quei fili spesso lavorano sulle stesse variabili in tempi diversi. Il pericolo è quando due thread condividono una variabile e un thread cambia il suo valore, mentre il secondo ancora utilizza. Un meccanismo di "bloccaggio" guardie tipicamente variabili in situazioni di threading. Con una stringa immutabile, tuttavia, un filo non riguarda il valore della variabile.

Sicurezza

L'immutabilità delle stringhe aiuta anche con alcuni problemi di sicurezza. Quando un utente inserisce le credenziali di accesso su un sito web, è teoricamente possibile per lui per modificare il valore della stringa username o la password prima di passare al sistema. Se questo accade, allora l'utente può iniettare codice dannoso per il sistema che lui o lei sta registrando in a. Poiché le stringhe, tuttavia, questo non è possibile.

Ridurre al minimo l'utilizzo della memoria

Quando un programmatore crea un oggetto stringa, tale oggetto risiede in un punto fisso nella memoria, e il nome della variabile funge da "riferimento". Poiché il riferimento alla memoria e ciò che la memoria contiene sono due cose separate, questo significa che altri nomi di variabili possono anche riferimento alla stessa posizione di memoria. Così, quando sono richieste copie di una stringa, diverse variabili possono fare riferimento la stessa stringa immutabile, e dal momento che non cambierà, non hanno bisogno di creare copie della stessa stringa.

Utilizzati nelle costruzioni HashTable dati

Hashtables sono chiamati "dizionari" perché usano le coppie chiave-valore per rendere la ricerca la struttura dei dati più facile. Le stringhe di solito fanno riferimento a un valore (come "nome" => "Robert" o "età" => 25). Dal momento che le stringhe sono immutabili, un programmatore non deve preoccuparsi per la parola chiave di un cambiamento di valore, e l'accesso perdere a quel valore.