Sobes.tech
Middle

Čo sa stane pri použití syntaxe String s1 = "asd"?

sobes.tech AI

Odpoveď od AI

Pri použití syntaxe String s1 = "asd";:

  1. 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.
  2. Vytvorenie objektu:
    • Ak "asd" už existuje v poole, premenná s1 sa naň jednoducho odkazuje.
    • Ak neexistuje, JVM vytvorí nový objekt String v poole reťazcov s hodnotou "asd".
  3. Priradenie odkazu: Premenná s1 získa odkaz na objekt String v 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.