Sobes.tech
Junior

Miks me ei loo stringi, kasutades konstruktorit new String()?

sobes.tech AI

Vastus AI-lt

Loomise stringi abil new String() alati loob uue String objekti virnas, isegi kui selline väärtus juba eksisteerib String Poolis.

Vastupidiselt, stringi literaalid (näiteks "tere") paigutatakse String Pooli. Kui selline väärtus juba eksisteerib String Poolis, kasutatakse olemasolevat objekti. Literallide kasutamine võimaldab JVMil optimeerida mälu kasutust.

Seetõttu põhjustab new String() liigset mälu kasutust ja võib vähendada jõudlust ebavajalike objektide loomise tõttu. Eelistame kasutada stringi literaale või muid stringi loomise meetodeid (näiteks String.valueOf()) ressursside säästmiseks.

// Soovitatav mitte. Alati loob uue objekti virnas.
String str1 = new String("tere");

// Soovitatav. Kasutab String Pooli, võib kasutada olemasolevat objekti.
String str2 = "tere";

// Võrdluse tulemus võib olla erinev
System.out.println(str1 == str2); // Tavaliselt false, kuna on erinevad objektid