Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Java - Nesne Kopyalama (Sığ ve Derin Kopyalama)



  December 02, 2018    Labels:,,,,,,, 

Java'da oluşturduğumuz nesneleri kopyalayarak yeni nesneler oluşturabiliriz. Kopyalayarak oluşturduğumuz yeni nesne tamamen yeni bir nesne de olabilir, kopyalanan nesne ile aynı nesne de olabilir. Bu yüzden Java'da iki tür nesne kopyalama yöntemi vardır.

  • Sığ Kopyalama (Shallow Copy)
  • Derin Kopyalama (Deep Copy)

Sığ kopyalamada oluşturulan iki nesnede aynı bellek bölgesini gösterir. Örneğin;

Canli canli1 = new Canli();
Canli canli2 = canli1;

Yukarıdaki ilk satırda canli1 isminde bir nesne oluşturuluyor ve bu nesne için new anahtar sözcüğü ile bellekte bir yer ayrılıyor. canli1 adındaki bu nesne bellekte onun için ayrılar yeri gösteriyor. Daha sonra canli2 adında oluşturduğumuz nesneye de canli1 adındaki nesnenin gösterdiği bellek adresini atıyoruz. Bu şekilde iki nesnede aynı bellek bölgesini gösteriyor. Bu tür nesne kopyalamasına sığ kopyalama(shallow copy) denir.

Derin kopyalamada ise yeni nesne için bellekte yeni bir alan oluşturulur ve kopyalanacak nesnenin tüm özelliklere teker teker yeni nesneye aktarılır.

Canli canli1 = new Canli();
canli1.isim = "kedi";
Canli canli2 = new Canli();
canli2.isim = canli1.isim;

Yukarıda görüldüğü gibi iki nesne içinde new anahtar sözcüğü ile bellekte iki ayrı yer ayrılıyor ve sadece nesnenin özellikleri kopyalanıyor. Bunun gibi bir kopyalama işlemine derin kopyalama(deep copy) denir.

No comments:

Post a Comment