Değişken/değişmez nesneler nelerdir ve bunlar ne içindir?  - 1

"Merhaba, Amigo!"

"Merhaba, Bilaabo!"

"Bugün Bilaabo size değişken ve değişmez nesnelerden bahsedecek .

"Oluşturulduktan sonra değiştirebileceğiniz nesnelere değişken denir ."

"Oluşturulduktan sonra değiştirilemeyen nesnelere immutable denir ."

"Bir nesneyi değiştirip değiştiremeyeceğimi ne belirler?"

"Yeni bir sınıfın yazarı, o sınıfın nesnelerini değişmez yapabilir. Örneğin, tüm ayarlayıcıları özel yaparsanız, o zaman bir nesnenin yalnızca bir yapıcısı ve alıcıları olur; bu, oluşturulduktan sonra değiştirilmesinin imkansız olacağı anlamına gelir. ."

"Peki bunun ne anlamı var?"

"Değişmez nesnelerin birçok yararlı özelliği vardır, ancak neredeyse tüm değişmez nesnelerde ortak olan iki tanesini vurgulayacağım:"

1) Değişmez nesnelerin uygulanması, değiştirilebilir nesnelerden çok daha kolaydır.

2) Değişmez nesneler aynı anda birden çok iş parçacığında serbestçe kullanılabilir.

"Bir geliştirici değişmez bir sınıf yazmaya karar verdiğinde, genellikle sınıfın hem değişken hem de değişmez bir sürümünü yapar."

"Ama bir yerine iki ders yazmanın ne anlamı var?"

"Bazen bir nesnenin değişmez bir sürümü değişken bir sürümden çok daha basit/hızlı olduğunda buna değer. Bu nedenle, iki sürüm oluştururlar. ArrayList ve LinkedList gibi bir şey: her ikisi de listedir, ancak biri belirli amaçlar için optimize edilmiştir, ve ikincisi diğerleri için."

"Bu zaten daha mantıklı."

"Değişken bir sürümü olmayan tamamen değişmez sınıflar da var."

"Ama ya bu nesnelerden birinde bir şeyi değiştirmem gerekirse? Sabit bir nesneyle aslında ne yapabilirsiniz?"

"Genellikle değişmez sınıflar, nesneyi değiştiriyormuş gibi davranan çeşitli yöntemler içerir, ancak bu yöntemler, nesnenin kendisini değiştirmek yerine basitçe yeni bir nesne oluşturur ve onu döndürür."

"İşte bazı örnekler:"

java kodu Tanım
String s = "london";
String s2 = s.toUpperCase();
Sonuç olarak s, «london» dizesini ve s2, «LONDON» dizesini içerir.
Integer i = 1;
Integer j = i;
j++;
İşte gerçekten olan şey:
Tamsayı i = new Tamsayı(1);
tamsayı j = i;
j = yeni Tamsayı(i.getInt()+1);

"String sınıfı değişmez bir sınıftır. Tüm String nesneleri değişmezdir, ancak bu, onlarla çalışmamızı engellemez. Örneğin, String sınıfının toUpperCase () yöntemi, bir String'i büyük harfe dönüştürür (yani tüm küçük harflerin yerine geçer) büyük harflerle). Ancak, bu yöntem String'in kendisini değiştirmez, bunun yerine yeni bir String döndürür. Bu yeni String, tüm karakterlerin büyük harf (büyük harfler) olması dışında ilkiyle aynıdır."

"Tamsayı sınıfı aynı zamanda değişmez bir sınıftır. Tüm Tamsayı nesneleri değişmezdir. Bir Tamsayı nesnesini her değiştirdiğimizde, aslında yeni bir nesne yaratmış oluyoruz."

"Ne kadar ilginç! Yaşasın, Bilaabo."

"Yaşasın bana! Bilaabo yaşasın!"