Junior
152
Waarvoor dient de String Pool in Java?
Antwoord van AI
sobes.tech AI
String Pool in Java is nodig voor:
- Memoriebesparing: Voorkomt het creëren van duplicaten van string-literals. Als een string met dezelfde waarde al bestaat in de pool, wordt er een verwijzing naar gebruikt.
- Prestatieoptimalisatie: Vergelijkingen van string-literals (
==) worden snel, omdat er naar referenties wordt vergeleken, niet naar de inhoud van de strings.
Bij het maken van string-literals (String s = "hello";) controleert de JVM eerst de String Pool. Als "hello" al bestaat, verwijst s naar het bestaande object. Zo niet, wordt een nieuw "hello"-object in de pool gemaakt, en s verwijst daarnaar.
Het gebruik van de constructor new String("hello") maakt altijd een nieuw String-object in het heap, onafhankelijk van de String Pool. Om het in de pool te plaatsen, moet de methode intern() worden aangeroepen.
// Voorbeeld van werking van String Pool
String s1 = "hello"; // Controleert de String Pool, maakt indien nodig, verwijst naar de pool
String s2 = "hello"; // Controleert de String Pool, vindt het bestaande, verwijst ook naar de pool
System.out.println(s1 == s2); // true - referenties zijn hetzelfde
String s3 = new String("hello"); // Maakt een nieuw object in het heap
System.out.println(s1 == s3); // false - referenties verschillen
String s4 = s3.intern(); // Controleert de String Pool voor de inhoud van s3.
// Omdat "hello" al in de pool zit (van s1/s2),
// verwijst s4 naar het object in de pool.
System.out.println(s1 == s4); // true - s1 en s4 verwijzen naar hetzelfde object in de pool