Sobes.tech
Junior — Middle

Vysvětlete princip použití StringPool a jeho roli v správě řetězců v Java

sobes.tech AI

Odpověď od AI

StringPool v Javě je speciální zásobník literálů řetězců, který ukládá unikátní instance řetězců pro úsporu paměti a zvýšení výkonu.

Když je řetězec vytvořen pomocí literálu, JVM zkontroluje, zda již takový řetězec v zásobníku existuje. Pokud ano, vrátí odkaz na existující; pokud ne, přidá nový.

To umožňuje:

  • Vyhnout se duplicitám stejných řetězců v paměti.
  • Rychlejší porovnávání řetězců podle odkazu (==), pokud pocházejí ze zásobníku.

Příklad:

String a = "hello";
String b = "hello";
System.out.println(a == b); // true, oba odkazují na stejný objekt v StringPool

String c = new String("hello");
System.out.println(a == c); // false, c je nový objekt mimo zásobník