Junior — Middle
Aké sú výhody a nevýhody používania String Pool v Jave?
sobes.tech AI
Odpoveď od AI
Pool reťazcov v Jave je špeciálne miesto v pamäti, kde sa ukladajú unikátne literály reťazcov. Keď sa vytvorí reťazec pomocou literálu, JVM skontroluje, či už taký reťazec v poole existuje, a ak áno, vráti naň odkaz; inak pridá nový.
Výhody:
- Úspora pamäti tým, že sa uloží iba jedna kópia každého unikátneho reťazca.
- Rýchle porovnanie reťazcov pomocou operátora
==pre reťazce z poolu, pretože sa porovnávajú odkazy.
Nevýhody:
- Reťazce vytvorené dynamicky (napríklad pomocou
new String()) nie sú automaticky pridané do poolu, čo môže viesť k duplikátom. - Pri veľkom počte unikátnych reťazcov môže pool zaberieť značné množstvo pamäti.
- Nie je vždy vhodné ho používať, ak sa reťazce často menia alebo sa vytvárajú dynamicky.
Príklad:
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // true, obe odkazujú na ten istý objekt v poole
String s3 = new String("hello");
System.out.println(s1 == s3); // false, rôzne objekty