logo

Java'da Değişmez Dize

String, herhangi bir uygulama programı yazarken kaçınılmaz bir değişken türüdür. Dize referansları, kullanıcı adı, parola vb. gibi çeşitli nitelikleri depolamak için kullanılır. Java'da, String nesneleri değişmezdir . Değişmez, basitçe değiştirilemez veya değiştirilemez anlamına gelir.

String nesnesi oluşturulduktan sonra verileri veya durumu değiştirilemez ancak yeni bir String nesnesi oluşturulur.

Aşağıda verilen örnekle değişmezlik kavramını anlamaya çalışalım:

Testimmutablestring.java

 class Testimmutablestring{ public static void main(String args[]){ String s='Sachin'; s.concat(' Tendulkar');//concat() method appends the string at the end System.out.println(s);//will print Sachin because strings are immutable objects } } 
Şimdi Test Edin

Çıktı:

 Sachin 

Şimdi aşağıda verilen diyagramdan anlaşılabilir. Burada Sachin değiştirilmez ancak Sachin Tendulkar ile yeni bir nesne yaratılır. String'in değişmez olarak bilinmesinin nedeni budur.

Java'da Değişmez Dize

Yukarıdaki şekilde gördüğünüz gibi iki nesne yaratılıyor ancak S referans değişkeni hala 'Sachin Tendulkar'a değil 'Sachin'e atıfta bulunuyor.

Ancak bunu açıkça referans değişkenine atarsak 'Sachin Tendulkar' nesnesine atıfta bulunacaktır.

Örneğin:

ah kavramları

Testimmutablestring1.java

 class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } } 
Şimdi Test Edin

Çıktı:

 Sachin Tendulkar 

Böyle bir durumda s 'Sachin Tendulkar'ı işaret eder. Lütfen Sachin nesnesinin hala değiştirilmediğine dikkat edin.

String nesneleri neden Java'da değişmez?

Java, String değişmez kavramını kullandığından. 5 referans değişkeninin olduğunu ve hepsinin tek bir 'Sachin' nesnesine atıfta bulunduğunu varsayalım. Bir referans değişkeni nesnenin değerini değiştirirse, tüm referans değişkenlerinden etkilenecektir. Bu nedenle String nesneleri Java'da değişmezdir.

Aşağıda String nesnelerini değişmez kılan String'in bazı özellikleri verilmiştir.

1. Sınıf Yükleyici:

Java'daki ClassLoader, argüman olarak bir String nesnesini kullanır. String nesnesi değiştirilebilirse değerin değişebileceğini ve yüklenmesi gereken sınıfın farklı olabileceğini düşünün.

Bu tür yanlış yorumlamaları önlemek için String değişmezdir.

2. Güvenli Konu:

String nesnesi değiştirilemez olduğundan, bir nesneyi birden fazla iş parçacığı arasında paylaştırırken gereken senkronizasyonla ilgilenmemize gerek yoktur.

3. Güvenlik:

Sınıf yüklemede gördüğümüz gibi değişmez String nesneleri doğru sınıfı yükleyerek daha fazla hata yapılmasını önler. Bu, uygulama programının daha güvenli hale getirilmesine yol açar. Bir bankacılık yazılımı örneğini düşünün. Kullanıcı adı ve parola herhangi bir davetsiz misafir tarafından değiştirilemez çünkü String nesneleri değiştirilemez. Bu, uygulama programını daha güvenli hale getirebilir.

4. Yığın Alanı:

yeni başlayanlar için java eğitimi

String'in değişmezliği, yığın belleğindeki kullanımı en aza indirmeye yardımcı olur. Yeni bir String nesnesi bildirmeye çalıştığımızda JVM, değerin String havuzunda zaten mevcut olup olmadığını kontrol eder. Varsa yeni nesneye aynı değer atanır. Bu özellik Java'nın yığın alanını verimli bir şekilde kullanmasını sağlar.

Java'da String sınıfı neden Final'dir?

String sınıfının final olmasının nedeni, hiç kimsenin String sınıfının yöntemlerini geçersiz kılamamasıdır. Böylece eski String nesnelerinin yanı sıra yeni String nesnelerine de aynı özellikleri sağlayabilir.