Sobes.tech
Junior

Java'da dize havuzu nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

String Havuzu (String Pool), JVM'nin Heap (Yığın) alanında bulunan ve string literal'larının saklandığı bir alandır. JVM bir string literal ile karşılaştığında önce bu havuzu kontrol eder. Eğer string zaten varsa, mevcut nesneye referans döner. Yoksa, havuzda yeni bir string nesnesi oluşturulur ve ona referans döndürülür.

Avantajlar:

  • Bellek tasarrufu: Birden fazla referans aynı string nesnesine havuzda işaret edebilir.
  • Performans: Havuzdaki string'ler için referans karşılaştırması (==) içerik karşılaştırmasından (equals()) daha hızlıdır.

Örnek:

// Havuzda string oluşturur (eğer henüz yoksa)
String s1 = "hello";

// Aynı "hello" nesnesine havuzdan referans döner
String s2 = "hello";

// s1 ve s2 aynı nesneye referans eder
System.out.println(s1 == s2); // true döner

// Heap'te yeni bir "hello" string nesnesi oluşturur, havuzda değil
String s3 = new String("hello");

// s1 ve s3 farklı nesnelere referans eder
System.out.println(s1 == s3); // false döner

// String'lerin içeriği aynıdır
System.out.println(s1.equals(s3)); // true döner

intern() metodu, new String() ile oluşturulan string'i açıkça havuza eklemek veya aynı içeriğe sahip mevcut havuzdaki string'e referans almak için kullanılabilir.

// Heap'te yeni bir "world" string nesnesi oluşturur
String s4 = new String("world");

// "world"'u havuza ekler (eğer yoksa) ve referansı döner
String s5 = s4.intern();

// Havuzda bir string oluşturur (şimdi s5'in gösterdiği nesneyle aynı nesneye referans)
String s6 = "world";

// s5 ve s6 aynı nesneye referans eder
System.out.println(s5 == s6); // true döner