ilkel etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
ilkel etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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

21 Aralık 2014 Pazar

Literal-Assignment

       S.a. Arkadaşlar,
        Bugünkü yazımız ise literaller olacak. Burada primitave (ilkel değişkenler) nasıl tanımlanır , onu öğreneceğiz. Bilmediğimiz ya da gözden kaçırdığımız bir yer var mı onu bakacağız. Burada kodu verip onun üzerinden anlatmaya çalışacağım. Siz de kodu derleyip kafanıza takılan kısımları kod üzerinden derleyip neyin ne olduğunu daha iyi analrsınız diye düşünüyorum

public static void main(String[] args) {
        //a,b,c değişkenleri hepsi 15 tanımladık gibi ama çıktısına dikkat ediniz
        int a = 15;  // 10luk tabanda
int b = 015; // 8lik tabanda , değerden önce 0 yazılmalı
int c = 0x15;//16lık tabanda , değerden önce 0x|X yazılmalı
             
        double d=100.343d; // d|D olsa da olur olmasa da 
        float f = 100.343f; // f|F koymak zorunlu yoksa hata alırız
             
        boolean  dogru=true; // sadece true|false alır
        byte k =(byte) 10;    // varsayılan int olduğu için cast yapmakta fayda var
        //byte hata= 128;      //[-128,127] aralığında olduğundan hata verir
             
        char m = 'm'; //charlar tek karekter alır 'xy' hata verir
char n = 100; // 100 hangi karektere karşılık geliyorsa o yazılır
char h = (char) 90000; // char [0-65535] aralığındadır.Unutmayalım
        char g = (char) -20;  // o nedenle cast yapmamız gerekti
char x = '\'';  // bir karekteri yazmak isterken önüne \ koymalıyız

System.out.println("int değerler: "+a + "  " + b + "  " + c  );
        System.out.println("float değerler:"+ d + " " + f);
        System.out.println("boolean değer:"+dogru+"byte değer:"+k);
        System.out.println("char derğerler:"+m +" "+ n+ " "+h+ " " +g+ " "+ x);
    }

ÇIKTI
int değerler: 15  13  21
float değerler:100.343 100.343
boolean değer:true byte değer:10
char derğerler:m  d  徐 ↓ '

Kaynak
http://www.injavawetrust.com/pure-java-22-literals/