Bugün
metoda veri tipi gönderme üzerinde duracağız. Ayrıntı olarak metodları
anlatmayacağız. Anlatacağımız konu ilkel verileri ile nesnelerin gönderimi
arasındaki farktan bahsedeceğiz. Bildiğimiz gibi Java’da 8 tane ilkel tip vardı
(Long, int, double, byte, short, float, char, boolean). Ve bunun dışında kalan
her şey nesneydi. Şimdi bu iki tür arasında nasıl bir fark olduğunu birlikte
inceleyelim. Bu konuda benim de daha önceden kafam karışıyordu. Fakat aşağıdaki
kodlar sayesinde bu konuyu daha iyi anladım. Umarım okuyanlara da faydalı olur
diye anlatmaya çalışacağım. Öncelikle ilkel veri gönderimi göndereceğiz. Burada
bir sorun yok beklenen oluyor. Sözü fazla uzatmadan koda geçelim.
public class OrnekTemelTip{
public static void
main(String[] args){
int sayi = 5;
;//int değil de diğer ilkel değişkenler de olabilir
System.out.println("Metottan Once = " + sayi);//5
degerArttir(sayi);
System.out.println("Metottan Sonra = " + sayi); // 5
}
public static void
degerArttir(int deger){
deger += 1;
System.out.println("Metod İçinde = " + deger); //6
}
}
Önceden bildiğimiz gibi burada 5 değerini gönderiyoruz.
Metoddan değer 6 oluyor fakat main içindeki değişkenin değeri aynı kalıyor.
Fakat bu nesnede nasıl oluyor bir de ona bakalım
public class OrnekReferansTip{
public static void
main(String[] args){
TamsayiSinifi
d = new TamsayiSinifi();
d.sayi = 5;
System.out.println("Metottan Once = " + d.sayi);//5
degerArttir(d);
System.out.println("Metottan Sonra = " + d.sayi);//6
}
public static void
degerArttir(TamsayiSinifi d){
d.sayi += 1;
System.out.println("Metod içinde = " + d.sayi);//6
}
}
class TamsayiSinifi{
public int sayi;
}
Burada ilkel veri göndermeden farklı olarak main içindeki
değişken de artık 6 değerini alıyor. Bunun nedeni objenin kendisini değil de
referansını göndermemizden kaynaklanıyor. Ama temel veride sayının bizzat
kendisi gönderiliyordu. Umarım aradaki farkı anlamanıza yardımcı
olabilmişizdir.
Kaynak:
Kodlar Aybars Uğur'dan alınıp bir kısmı değiştirilmiştir
Hiç yorum yok:
Yorum Gönder