Junior
Proč ne vytváříme řetězec pomocí konstruktoru new String()?
sobes.tech AI
Odpověď od AI
Vytvoření řetězce pomocí new String() vždy vytvoří nový objekt String na haldě, i když již řetězec se stejnou hodnotou existuje v String Pool.
Naopak, literály řetězců (například "ahoj") jsou umístěny do String Pool. Pokud již v String Pool existuje řetězec se stejnou hodnotou, je použit stávající objekt. Použití literálů umožňuje JVM optimalizovat využití paměti.
Tím pádem new String() vede k nadměrnému využívání paměti a může snížit výkon kvůli vytváření zbytečných objektů. Dáváme přednost používání literálů řetězců nebo jiných metod tvorby řetězců (například String.valueOf()) pro úsporu zdrojů.
// Nedoporučuje se. Vždy vytvoří nový objekt na haldě.
String str1 = new String("ahoj");
// Doporučuje se. Používá String Pool, může použít existující objekt.
String str2 = "ahoj";
// Výsledek porovnání může být odlišný
System.out.println(str1 == str2); // Obvykle false, protože jsou to různé objekty