Middle
Čo sa stane pri použití syntaxe String s1 = "asd"?
sobes.tech AI
Odpoveď od AI
Pri použití syntaxe String s1 = "asd";:
- Pool reťazcov (String Pool): JVM kontroluje, či už literál reťazca
"asd"existuje v poolu reťazcov. Pool reťazcov je špeciálna oblasť v halde, kde sú uložené unikátne literály reťazcov na úsporu pamäti. - Vytvorenie objektu:
- Ak
"asd"už existuje v poole, premennás1sa naň jednoducho odkazuje. - Ak neexistuje, JVM vytvorí nový objekt
Stringv poole reťazcov s hodnotou"asd".
- Ak
- Priradenie odkazu: Premenná
s1získa odkaz na objektStringv poole reťazcov.
Na rozdiel od String s2 = new String("asd");, pri použití literálu môže byť objekt znovu použitý inými odkazmi, ktoré ukazujú na ten istý literál, čo vedie k optimalizácii pamäti.