Sobes.tech
Middle

Co se stane při použití syntaxe String s1 = "asd"?

sobes.tech AI

Odpověď od AI

Při použití syntaxe String s1 = "asd";:

  1. String Pool: JVM kontroluje, zda již literál řetězce "asd" existuje v poolu řetězců. Pool řetězců je speciální oblast v haldě, kde jsou uloženy unikátní literály řetězců pro úsporu paměti.
  2. Vytvoření objektu:
    • Pokud "asd" již v poolu existuje, proměnná s1 jednoduše odkazuje na tento existující objekt v poolu.
    • Pokud ne, JVM vytvoří nový objekt String v poolu řetězců s hodnotou "asd".
  3. Přiřazení odkazu: Proměnná s1 získá odkaz na objekt String v poolu řetězců.

Na rozdíl od String s2 = new String("asd");, při použití literálu může být objekt znovu použit jinými odkazy, které ukazují na stejný literál, což vede k optimalizaci paměti.