Sobes.tech
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