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, քանի որ տարբեր օբյեկտներ են