Bölüm 5 · SimülatörDizgi Havuzu ve StringBuilder? ← Bölüm 5 ◀ Adım ▶ Oynat Sıfırla Kendini dene Doğru 0 / 0Java koduBellekÇıktı (konsol) KapatDizgi Havuzu ve StringBuilderAmaç: Java'nın dizgileri bellekte nasıl tuttuğunu görmek. Kaynak koddaki "Java" gibi dizgi sabitleri heap'teki özel bir bölgede, dizgi havuzunda tutulur ve içeriği aynı sabitler tek bir nesneyi paylaşır. String değiştirilemez: her "değişiklik" yeni bir nesne üretir. StringBuilder ise aynı tamponu yerinde değiştirir.Nasıl kullanılır?Listeden bir program seçin; Adım ▶ / ◀ (klavyede → / ←), Oynat, Sıfırla.Solda yığındaki main çerçevesi, sağda heap: yeşil kesik çerçeveli bölge dizgi havuzudur. Yeni oluşan nesne kırmızı kenarlı, ulaşılamayan nesne soluk ve kesik çizgilidir (çöp toplamaya uygun).Kendini dene açıkken her println çıktısını önceden tahmin edersiniz.Hatırlatma== iki referansın aynı nesneyi gösterip göstermediğine bakar; equals içerikleri karşılaştırır. Dizgileri her zaman equals ile karşılaştırın.new String("Java") havuzdaki sabitten bağımsız, yeni bir nesne oluşturur. s.intern() havuzdaki eşini döndürür.Derleme zamanında hesaplanabilen ifadeler ("Ja" + "va", final değişkenle birleştirme) tek bir sabite dönüşür ve havuza gider; değişkenle çalışma zamanında yapılan + yeni nesne üretir.s.toUpperCase() gibi metotlar s'yi değiştirmez; sonucu kullanmak için atamak gerekir: s = s.toUpperCase();StringBuilder'ın bir uzunluğu (length) ve tampon büyüklüğü (capacity) vardır; new StringBuilder("Ja") için kapasite 16 + 2 = 18'dir. Döngüde birleştirme için String + yerine StringBuilder kullanılır.Nesne numaraları (#1, #2…) yalnızca anlatım içindir. Bir sabitin havuza tam olarak ne zaman eklendiği JVM'e bağlıdır; burada ilk kullanıldığı satırda gösterilir. Tüm çıktılar javac --release 8 ile derlenip Java 8 üzerinde çalıştırılarak doğrulanmıştır.İlgili sunum: Bölüm 5 · Dizgi (== ile Karşılaştırma, Dizgi Havuzu, Havuz: Adım Adım, Değiştirilemez (Immutable), StringBuilder).