26 Aralık 2014 Cuma

Metoda ilkel Veri ve Nesne Gönderimi

                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