Java

Primitive Type & Reference (Object) Type


Merhabalar bu yazımda ilkel tip ve referans tip arasındaki yapıya ve farklılıklarına değinmek istiyorum. Öncelikle bilmemiz gereken primitive type (ilkel tipler) ve reference type (referans tipler)’i birbirinden ayıran en temel nokta bellekte tutulma biçimleridir.


Primivite type (İlkel tip) nedir ?

Değerleri stack (yığıt) üzerinde tutulan ilkel tiplerdir. Bunlar ;
boolean , byte , char , short , int , long , float ve double ‘dır .
İlkel tiplere değer verilmediği takdirde varsayılan (default) değerleri aşağıdaki gibi programlama dili tarafından otomatik olarak atanmaktadır.
double = 0.0 | float = 0.0f | long = 0 | int = 0 şeklindedir.

Oluşturulan değer ilkel tip ise yığıtta değer olarak tutulmaktadır. Yani örnekte olduğu gibi num1 bellekte 10 değeri num2 ise bellekte 20 değeri ile tutulmaktadır.

// num1=10 ve num2=20 değerine sahip
num1=num2;
num2=100;
System.out.print(num1);

(num1=num2) atama işleminden sonra artık num2 değeri num1'e de ait olmuş olur. Ve num2'ye 100 sabit sayısı atandıktan sonra güncel değerler;
num1: 20, num2: 100 olmaktadır.


Reference type (Object/ Referans Tip) nedir?

Referans tutucuları yani pointer’ları stackte tutulup değerleri ise heap(yığın) de bulunan veri tipleridir. İlkel tiplerin object halleridir de diyebiliriz. Örnek olarak; String, int[] vb. verebiliriz. Herhangi bir değer girilmediğinde varsayılan değer null olarak atanacaktır.

nums1=nums2; 
nums2[0]=100;
System.out.print(nums1[0]);
nums1=nums2 atamasını yaptıkan sonra artık nums1 heap’teki nums2'nin tuttuğu adresi referans alıp oradaki değeri temsil edecektir. 
Geriye kalan, bellekte kullanılmayan verileri ise Java’nın garbage collector’u sayesinde silinecektir

Yani artık nums1 dizisi de nums2 dizisi de {10,20,30} verisini içeren adresi tutacaktır. 
Son olarak nums2[0]=100; // nums2 dizisinin ilk elemanını 100 olarak güncellemektedir. Yani güncel olarak artık {10,20,30} verisini tutan adresin son hali {100,20,30} dur.

nums2 dizisinin ilk indisine erişmek istediğimiz de ise artık 10 değil 100 verisine erişmekteyiz bu örnek ile ilkel tip ve referans tip arasındaki farkı bu iki örnek ile açıklamış olduk.


İyi günler, iyi çalışmalar :)
by OzerBey
0 Yorum
Yorum Yap
Yasin Özer
Merhaba, Ben Yasin Özer

A friend who is a computer engineer

Bizi takip edin!

Gelişmelerden daha hızlı haberdar olmak için sosyal medya hesaplarımızı takip edin.