Miért nem hozunk létre egy sztringet a new String() konstruktor segítségével?
sobes.tech MI
Válasz az MI-től
A new String() használatával létrehozott sztring mindig új String objektumot hoz létre a heap-en, még akkor is, ha ugyanazzal az értékkel rendelkező sztring már létezik a String Pool-ban.
Ezzel szemben a sztring literálok (például "hello") a String Pool-ba kerülnek. Ha már létezik egy ilyen értékű sztring a String Pool-ban, akkor az meglévő objektum kerül felhasználásra. A literálok használata lehetővé teszi a JVM számára, hogy optimalizálja a memóriahasználatot.
Ezért a new String() túlzott memóriafogyasztáshoz vezethet, és csökkentheti a teljesítményt azzal, hogy felesleges objektumokat hoz létre. Előnyben részesítjük a sztring literálokat vagy más sztringkészítési módszereket (például String.valueOf()) a források megtakarítása érdekében.
// Nem ajánlott. Mindig új objektumot hoz létre a heap-en.
String str1 = new String("hello");
// Ajánlott. A String Pool-t használja, létező objektumot is használhat.
String str2 = "hello";
// A összehasonlítás eredménye eltérő lehet
System.out.println(str1 == str2); // Általában false, mert külön objektumok