Junior
Java'da String Pool ne işe yarar?
sobes.tech yapay zeka
AI'dan gelen yanıt
Java'da String Pool, şunlar için gereklidir:
- Bellek Tasarrufu: Aynı değere sahip string literal'larının çoğaltılmasını önler. Eğer aynı değere sahip bir string zaten havuzda varsa, ona referans kullanılır.
- Performans Optimizasyonu: String literal'larının karşılaştırılması (
==) hızlı hale gelir, çünkü içerik değil, referanslar karşılaştırılır.
String literal'ları oluştururken (String s = "hello";), JVM önce String Pool'u kontrol eder. Eğer "hello" zaten varsa, s mevcut nesneye referans eder. Yoksa, yeni bir "hello" nesnesi havuzda oluşturulur ve s ona referans eder.
new String("hello") yapıcı kullanımı her zaman yeni bir String nesnesi oluşturur, bağımsız olarak havuzdan. Bunu havuza eklemek için intern() metodunu çağırmak gerekir.
// String Pool'un çalışma örneği
String s1 = "hello"; // Havuzu kontrol eder, gerekirse oluşturur, havuza referans eder
String s2 = "hello"; // Havuzu kontrol eder, mevcut olanı bulur, havuza referans eder
System.out.println(s1 == s2); // true - referanslar aynı
String s3 = new String("hello"); // Yeni bir nesne oluşturur
System.out.println(s1 == s3); // false - referanslar farklı
String s4 = s3.intern(); // Havuzu kontrol eder, içerik s3'e göre
// "hello" zaten havuzda olduğu için (s1/s2),
// s4 havuzdaki nesneye referans eder.
System.out.println(s1 == s4); // true - s1 ve s4 aynı nesneye referans eder