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";:
- 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. - Vytvoření objektu:
- Pokud
"asd"již v poolu existuje, proměnnás1jednoduše odkazuje na tento existující objekt v poolu. - Pokud ne, JVM vytvoří nový objekt
Stringv poolu řetězců s hodnotou"asd".
- Pokud
- Přiřazení odkazu: Proměnná
s1získá odkaz na objektStringv 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.