Wat is Java String Pool?

Zoals de naam al aangeeft, is een String Pool in Java een pool van Strings die zijn opgeslagen in Java Heap-geheugen. We weten dat String een speciale klasse is in Java en we String-objecten kunnen maken met behulp van een nieuwe operator, evenals door waarden tussen dubbele aanhalingstekens te plaatsen.

String Pool in Java

Hier is een diagram dat duidelijk uitlegt hoe String Pool wordt onderhouden in de Java heap space en wat er gebeurt wanneer we verschillende manieren gebruiken om Strings te maken. String Pool is alleen mogelijk omdat String in Java onveranderlijk is en zijn implementatie van het String interning concept. String pool is ook een voorbeeld van het Flyweight design pattern. String pool helpt bij het besparen van veel ruimte voor Java Runtime, hoewel het meer tijd kost om de String te maken. Wanneer we dubbele aanhalingstekens gebruiken om een String te maken, zoekt het eerst naar een String met dezelfde waarde in de String pool. Als het wordt gevonden, retourneert het gewoon de referentie, anders maakt het een nieuwe String in de pool en retourneert het de referentie. Door echter de new operator te gebruiken, dwingen we de String klasse om een nieuw String object in de heap space te maken. We kunnen de intern() methode gebruiken om het in de pool te plaatsen of te verwijzen naar een ander String object uit de string pool met dezelfde waarde. Hier is het Java-programma voor de String Pool afbeelding:

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));
    }

}

De uitvoer van het bovenstaande programma is:

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

Aanbevolen lezen: Java String Klasse

Hoeveel strings worden er gemaakt in de String Pool?

Soms wordt er tijdens een Java-interview een vraag gesteld over de String-pool. Bijvoorbeeld, hoeveel strings worden er gemaakt in de onderstaande instructie;

String str = new String("Cat");

In de bovenstaande instructie worden er ofwel 1 of 2 strings gemaakt. Als er al een string-letterlijke “Cat” in de pool is, wordt slechts één string “str” in de pool gemaakt. Als er geen string-letterlijke “Cat” in de pool is, wordt deze eerst in de pool gemaakt en vervolgens in de heap-ruimte, dus in totaal worden er 2 string-objecten gemaakt. Lees: Java String Interviewvragen

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