Sobes.tech
Middle

Java'da String türündeki değerin neden değiştirilemediği?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'daki String türünün değeri değiştirilemez (immutable) çünkü:

  • String Havuzunun Verimli Kullanımı: JVM, bellek tasarrufu için bir string havuzu tutar. Değiştirilemeyen stringler, birden fazla değişkenin aynı havuzdaki nesneye referans vermesine izin verir, böylece birinin değiştirilmesi diğerlerini etkilemez.
  • İş Parçacığı Güvenliği: String nesneleri değiştirilemez olduğundan, dışsal senkronizasyon olmadan güvenle iş parçacıkları arasında paylaşılabilirler. Bu, çok iş parçacıklı programlamayı basitleştirir.
  • Koleksiyonlarda Anahtar Olarak Kullanım: String, sıkça HashMap ve HashSet gibi koleksiyonlarda anahtar olarak kullanılır. Değiştirilemezlik, nesnenin karma kodunun yaşam süresi boyunca sabit kalmasını sağlar, bu da bu veri yapıların doğru çalışması için kritiktir. Anahtar olarak kullanılan nesne değiştirildiğinde, iç yapısı bozulur.
  • Güvenlik: String nesneleri, dosya adları, ağ adresleri ve şifreler gibi önemli verileri temsil etmek için kullanılır. Değiştirilemezlik, bu değerlerin oluşturulduktan sonra kazara veya kötü niyetli değişikliklerini önler.

String değeri "değişiyormuş" gibi görünüyorsa (örneğin, stringleri birleştirirken), aslında yeni bir String nesnesi oluşturulur.

// Havuzdaki orijinal string
String s1 = "Hello";

// Yeni bir "Hello World" nesnesi oluşturulur, s1 "Hello"'ya referans vermeye devam eder
String s2 = s1 + " World";

Sık sık string değişiklikleri gerektiren işlemler için, StringBuilder (iş parçacığı güvenli olmayan) veya StringBuffer (iş parçacığı güvenli) gibi değiştirilebilir sınıflar kullanılır.