Sobes.tech
Junior

Ինչու չենք ստեղծում տող `new String()` կոնստրուկտորով?

sobes.tech AI

Պատասխան AI-ից

new String() օգտագործելով տող ստեղծելը միշտ նոր String օբյեկտ է ստեղծում հոսքում, նույնիսկ եթե նույն արժեքով տող արդեն գոյություն ունի String Pool-ում:

Ավելորդ, տողային լիտերալները (օրինակ, "բարև") տեղադրվում են String Pool-ում: Եթե նույն արժեքով տող արդեն կա String Pool-ում, օգտագործվում է գոյություն ունեցող օբյեկտը: Լիտերալների օգտագործումը թույլ է տալիս JVM-ին օպտիմալացնել հիշողության օգտագործումը:

Այսպիսով, new String() հանգեցնում է ավելորդ հիշողության սպառման և կարող է նվազեցնել կատարողականությունը անպետք օբյեկտների ստեղծման պատճառով: Մենք նախընտրում ենք օգտագործել տողային լիտերալներ կամ այլ մեթոդներ (String.valueOf()) ռեսուրսների խնայողության համար:

// Չի խորհուրդ տրվում: միշտ ստեղծում է նոր օբյեկտ հոսքում:
String str1 = new String("բարև");

// Խորհուրդ է տրվում: Օգտագործում է String Pool-ը, կարող է օգտագործել գոյություն ունեցող օբյեկտը:
String str2 = "բարև";

// Համեմատության արդյունքը կարող է տարբեր լինել
System.out.println(str1 == str2); // Հաճախ՝ false, քանի որ տարբեր օբյեկտներ են