Sobes.tech
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