Junior
A cosa serve il String Pool in Java?
sobes.tech AI
Risposta dell'AI
Il String Pool in Java è necessario per:
- Risparmio di memoria: Previene la creazione di duplicati di letterali di stringa. Se una stringa con lo stesso valore esiste già nel pool, viene usata una referenza ad essa.
- Ottimizzazione delle prestazioni: Il confronto di letterali di stringa (
==) diventa rapido, poiché vengono confrontate le referenze, non il contenuto delle stringhe.
Quando si creano letterali di stringa (String s = "hello";), la JVM verifica prima il String Pool. Se "hello" esiste già, s fa riferimento all'oggetto esistente. Altrimenti, viene creato un nuovo oggetto "hello" nel pool, e s fa riferimento ad esso.
L'uso del costruttore new String("hello") crea sempre un nuovo oggetto String nell'heap, indipendentemente dal String Pool. Per inserirlo nel pool, bisogna chiamare il metodo intern().
// Esempio di funzionamento del String Pool
String s1 = "hello"; // Verifica il String Pool, crea se necessario, fa riferimento al pool
String s2 = "hello"; // Verifica il String Pool, trova quello esistente, fa riferimento al pool
System.out.println(s1 == s2); // true - le referenze sono uguali
String s3 = new String("hello"); // Crea un nuovo oggetto nell'heap
System.out.println(s1 == s3); // false - le referenze sono diverse
String s4 = s3.intern(); // Verifica il String Pool per il contenuto di s3.
// Poiché "hello" è già nel pool (da s1/s2),
// s4 fa riferimento all'oggetto nel pool.
System.out.println(s1 == s4); // true - s1 e s4 fanno riferimento allo stesso oggetto nel pool