Junior
Java-da sətir hovuzu nədir?
sobes.tech Süni İntellekt
AI-dan cavab
String Pool (String Pool) JVM-nin Heap (Yığım) sahəsində yerləşən və string literal'larının saxlandığı sahədir. JVM bir string literal'ına rast gəldikdə, əvvəlcə bu pool-u yoxlayır. Əgər string artıq mövcuddursa, mövcud obyektdən referans qaytarılır. Əks halda, pool-da yeni string obyekti yaradılır və ona referans qaytarılır.
Üstünlüklər:
- Yaddaş qənaəti: Bir neçə referans eyni string obyektinə pool-da işarə edə bilər.
- Performans: Pool-dakı string'lər üçün referansların müqayisəsi (==) stringlərin məzmununun müqayisəsindən (equals()) daha sürətlidir.
Nümunə:
// Pool-da string yaradır (əgər hələ yoxdursa)
String s1 = "hello";
// Eyni "hello" obyektinə pool-dan referans qaytarır
String s2 = "hello";
// s1 və s2 eyni obyekti göstərir
System.out.println(s1 == s2); // true göstərəcək
// Heap-də yeni "hello" string obyekti yaradır, pool-da deyil
String s3 = new String("hello");
// s1 və s3 fərqli obyektlərə referans edir
System.out.println(s1 == s3); // false göstərəcək
// String'lərin məzmunu eynidir
System.out.println(s1.equals(s3)); // true göstərəcək
intern() metodu, new String() ilə yaradılmış string-i açıq şəkildə pool-a əlavə etmək və ya eyni məzmunlu mövcud string-ə referans almaq üçün istifadə edilə bilər.
// Heap-də yeni "world" string obyekti yaradır
String s4 = new String("world");
// "world"-u pool-a əlavə edir (əgər artıq yoxdursa) və referansı qaytarır
String s5 = s4.intern();
// Pool-da string yaradır (indiki s5-in göstərdiyi obyektlə eyni obyektə referans)
String s6 = "world";
// s5 və s6 eyni obyekti göstərir
System.out.println(s5 == s6); // true göstərəcək