Sobes.tech
Junior

Wat is een string pool in Java?

sobes.tech AI

Antwoord van AI

De String Pool (String Pool) is een gebied in de heap (stapel) van de JVM waar string literals worden opgeslagen. Wanneer de JVM een string literal tegenkomt, controleert deze eerst deze pool. Als de string al bestaat, wordt een verwijzing naar het bestaande object geretourneerd. Zo niet, wordt een nieuw string-object in de pool gemaakt en wordt er een verwijzing naar geretourneerd.

Voordelen:

  • Memoriebesparing: Meerdere verwijzingen kunnen naar hetzelfde string-object in de pool wijzen.
  • Prestaties: Vergelijking van verwijzingen (==) voor strings in de pool is sneller dan het vergelijken van de inhoud van strings (equals()).

Voorbeeld:

// Maakt een string in de pool (als deze nog niet bestaat)
String s1 = "hello";

// Geeft een verwijzing naar hetzelfde "hello" object uit de pool
String s2 = "hello";

// s1 en s2 verwijzen naar hetzelfde object
System.out.println(s1 == s2); // Zal true afdrukken

// Maakt een nieuw string-object "hello" in de heap, niet in de pool
String s3 = new String("hello");

// s1 en s3 verwijzen naar verschillende objecten
System.out.println(s1 == s3); // Zal false afdrukken

// De inhoud van de strings is gelijk
System.out.println(s1.equals(s3)); // Zal true afdrukken

De methode intern() kan worden gebruikt om expliciet een met new String() gemaakte string aan de pool toe te voegen of om een verwijzing te krijgen naar een bestaande string in de pool met dezelfde inhoud.

// Maakt een nieuw string-object "world" in de heap
String s4 = new String("world");

// Voegt "world" toe aan de pool (als het er nog niet is) en geeft de verwijzing
String s5 = s4.intern();

// Maakt een string in de pool (verwijzing naar hetzelfde object waar s5 nu naar wijst)
String s6 = "world";

// s5 en s6 verwijzen naar hetzelfde object in de pool
System.out.println(s5 == s6); // Zal true afdrukken