Junior
Java-da String Pool nə üçün lazımdır?
sobes.tech Süni İntellekt
AI-dan cavab
Java'da String Pool, aşağıdakılar üçün vacibdir:
- Yaddaşın qənaəti: Eyni dəyərə malik string literallarının çoxalmasının qarşısını alır. Əgər eyni dəyərə malik string artıq poolda mövcuddursa, ona istinad istifadə olunur.
- Performansın optimallaşdırılması: String literal'larının müqayisəsi (
==) sürətli olur, çünki onlar referanslar ilə müqayisə edilir, stringlərin məzmunu ilə deyil.
String literal'ları yaradan zaman (String s = "hello";), JVM əvvəlcə String Pool-u yoxlayır. Əgər "hello" artıq mövcuddursa, s mövcud obyektə istinad edir. Əks halda, yeni "hello" obyekti poolda yaradılır və s ona istinad edir.
new String("hello") konstruktoru həmişə yeni String obyekti yaradır, müstəqil olaraq pooldan. Onu poola əlavə etmək üçün intern() metodunu çağırmaq lazımdır.
// String Pool-un işləmə nümunəsi
String s1 = "hello"; // Pool-u yoxlayır, lazım olsa yaradır, poola istinad edir
String s2 = "hello"; // Pool-u yoxlayır, mövcudu tapır, həmçinin poola istinad edir
System.out.println(s1 == s2); // true - referanslar eynidir
String s3 = new String("hello"); // Yeni obyekt yaradır
System.out.println(s1 == s3); // false - referanslar fərqlidir
String s4 = s3.intern(); // Pool-u yoxlayır, s3-ün məzmunu üçün.
// "hello" artıq poolda olduğundan (s1/s2),
// s4 pooldakı obyektə istinad edir.
System.out.println(s1 == s4); // true - s1 və s4 eyni obyektə istinad edir