Cosa è il Pool di Stringhe Java?

Come suggerisce il nome, String Pool in Java è un pool di stringhe memorizzate nella Java Heap Memory. Sappiamo che String è una classe speciale in Java e possiamo creare oggetti di tipo String utilizzando l’operatore new o fornendo valori tra doppi apici.

String Pool in Java

Ecco un diagramma che spiega chiaramente come viene mantenuto il String Pool nello heap di java e cosa succede quando usiamo diversi modi per creare Stringhe. Il String Pool è possibile solo perché String è immutabile in Java e la sua implementazione del concetto di internamento delle stringhe. Il String Pool è anche un esempio del pattern di progettazione Flyweight. Il String Pool aiuta a risparmiare molto spazio per l’esecuzione di Java anche se ci vuole più tempo per creare la Stringa. Quando usiamo le virgolette doppie per creare una Stringa, prima cerca una Stringa con lo stesso valore nel String Pool, se la trova restituisce solo il riferimento altrimenti crea una nuova Stringa nel pool e poi restituisce il riferimento. Tuttavia, utilizzando l’operatore new, costringiamo la classe String a creare un nuovo oggetto Stringa nello spazio heap. Possiamo utilizzare il metodo intern() per inserirlo nel pool o fare riferimento a un altro oggetto Stringa dal pool di stringhe con lo stesso valore. Ecco il programma java per l’immagine del String Pool:

package com.journaldev.util;

public class StringPool {

    /**
     * Java String Pool example
     * @param args
     */
    public static void main(String[] args) {
        String s1 = "Cat";
        String s2 = "Cat";
        String s3 = new String("Cat");
        
        System.out.println("s1 == s2 :"+(s1==s2));
        System.out.println("s1 == s3 :"+(s1==s3));
    }

}

L’output del programma sopra è:

s1 == s2 :true
s1 == s3 :false

Consigliato: Classe Stringa Java

Quante stringhe vengono create nel Pool delle Stringhe?

A volte, durante un colloquio di lavoro in Java, potrebbe essere posta una domanda sul pool delle stringhe. Ad esempio, quante stringhe vengono create nella seguente istruzione;

String str = new String("Cat");

Nella suddetta istruzione, verrà creata una o due stringhe. Se è già presente una stringa letterale “Cat” nel pool, verrà creata solo una stringa “str” nel pool. Se non è presente una stringa letterale “Cat” nel pool, verrà prima creata nel pool e poi nello spazio heap, quindi verranno create un totale di 2 oggetti stringa. Leggi: Domande per colloqui su Java Stringhe

Source:
https://www.digitalocean.com/community/tutorials/what-is-java-string-pool