Junior
Niyə yeni String() qurucusu ilə sətir yaratmırıq?
sobes.tech Süni İntellekt
AI-dan cavab
new String() istifadə edərək sətir yaratmaq həmişə yeni String obyekti yaradır, hətta belə bir dəyərə malik sətir artıq String Pool-da mövcuddursa belə.
Əksinə, sətir literaləri (məsələn, "salam") String Pool-a yerləşdirilir. Əgər eyni dəyərə malik sətir artıq String Pool-da mövcuddursa, mövcud obyekt istifadə olunur. Literalardan istifadə JVM-nin yaddaş istifadəsini optimallaşdırmağa imkan verir.
Beləliklə, new String() artıq yaddaş sərfiyyatına səbəb olur və lazımsız obyektlərin yaradılması səbəbindən performansı azalda bilər. Resursları qənaətlə istifadə etmək üçün sətir literaləri və ya digər sətir yaratma metodlarından (məsələn, String.valueOf()) istifadə etməyi üstün tuturuq.
// Tövsiyə edilmir. Həmişə heap-də yeni obyekt yaradır.
String str1 = new String("salam");
// Tövsiyə edilir. String Pool-u istifadə edir, mövcud obyekt istifadə oluna bilər.
String str2 = "salam";
// Müqayisənin nəticəsi fərqli ola bilər
System.out.println(str1 == str2); // Adətən false, çünki fərqli obyektlərdir