Junior
Kodėl nesukuriame eilutės naudodami konstruktorių new String()?
sobes.tech AI
Atsakymas iš AI
Kuriant eilutę naudojant new String() visada sukuriamas naujas String objektas krūvoje, net jei tokios pačios reikšmės eilutė jau egzistuoja String Pool.
Priešingai, eilutės literatūros (pavyzdžiui, "labas") yra įdedamos į String Pool. Jei tokia reikšmė jau yra String Pool, naudojamas esamas objektas. Literatūrų naudojimas leidžia JVM optimizuoti atminties naudojimą.
Todėl new String() sukelia perteklinį atminties naudojimą ir gali sumažinti našumą dėl nereikalingų objektų kūrimo. Mes teikiame pirmenybę eilutės literatūroms arba kitoms eilutės kūrimo metodams (pvz., String.valueOf()) taupant išteklius.
// Nerekomenduojama. Visada sukuria naują objektą krūvoje.
String str1 = new String("labas");
// Rekomenduojama. Naudoja `String Pool`, gali naudoti esamą objektą.
String str2 = "labas";
// Palyginimo rezultatas gali būti skirtingas
System.out.println(str1 == str2); // Dažniausiai false, nes tai skirtingi objektai