String’ler Neden Değiştirilemez?

2228 kez okundu.

String sınıfının Java API’sinde gerçekten çok özel bir sınıfı olduğunu söylemiştik. Bu sınıfı özel yapan farklardan birisi String tipindeki nesnelerin değerlerinin değiştirilememesidir. Şimdi nedenlerine bakalım:

1-Güvenlik: Belki de en önemli nedendir. Java Api’sindeki kritik parametrelerin çoğu String tipindedir: Örneğin: veritabanı bağlantıları için kullanılan metot parametreleri, kullanıcı adları, şifreler, sql sorguları gibi. Eğer String objeleri değiştirilebilir olsaydı, bu durumda güvenlik açıkları ortaya çıkabilirdi.

2- Senkronizasyon (thread safe): Stringler değişmez olduklarından otomatik olarak thread safe’dirler.

3-String saklama: Çoğu projede neredeyse en fazla kullanılan tip String olduğundan, performansı artırmak için String pool gibi bazı optimizasyon yöntemleri bulunmuştur.

1
2
3
String a = "javadunyasi.com";
 
String b = "javadunyasi.com";

satırlarındaki a ve b referansları pool’da olan aynı objeyi göstermektedir. String nesnesinin değeri değiştirilebilir olsaydı, herhangi bir String nesnesinin değeri değiştiğinde diğer referansın da gösterdiği objenin değeri değişecekti. Eğer böyle bir durum söz konusu olsaydı String pool’un hiçbir anlamı kalmazdı.

4-Verimlilik: String tipi nesneler değişmedikleri için örneğin hashcode’ları sürekli aynı kalacaktır. Eğer değişiyor olsaydı her değiştiğinde hascode’u yeniden hesaplanacak ve bu da sistemin performansını azaltacaktı.

Tabi ki bu soruya en güzel cevabı String sınıfını dizayn eden kişi verecektir. Fakat yukarıda sıralanan maddeler de en mantıklı ve olası nedenlerdir.

You may also like...

Yorum Yazın

avatar
  Subscribe  
Notify of