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

29 Aralık 2014 Pazartesi

Wrapper Classes Metod ve Özellikleri

        Bugünkü konumuz yine Wrapper Classes olacak. Bir önceki yazımızda nedir ne değildir sorusunun cevabını aramıştık. Bugün ise biraz daha işin derinlerine girmeyi düşünüyoruz. Önceki yazımıza erişmek isterseniz buraya tıklayınız. Peki nedir bu metodlar:

valueOf()   String ---> Wrapper    Örn : String-> Long
xxxValue()  Wrapper ---> primitive  Örn ; Long->long
parseXXX()  String ---> primitive  Örn; String-> long

Şimdi burada ne demek istediğimizi kodlarla açıklamaya çalışacağız. O zaman konunun daha iyi oturacağını temenni ederiz. Sizi şimdi kodlarla baş başa bırakalım.

public class Wripper3lu {
    public static void main(String[] args) {
        //ValueOf metodu Kullanımı
        //aynı işlemleri diğerleri için de yapabiliriz
        Float f1 = Float.valueOf("10.5"); // Sting->Wrapper
Float f2 = Float.valueOf("10.5f");
Float f3 = Float.valueOf(10);    //float->Float| primative->Wrapper
Float f4 = Float.valueOf("10");
System.out.println(f1 + " " + f2 + " " + f3 + " " + f4 );
     
        //xxxValue metodu Kullanımı
        Integer i1 = new Integer(100);
        short s = i1.byteValue();
short s2 = i1.shortValue();
// short s3 = i1.intValue(); // int>short olduğundan error
// short s4= i1.longValue(); //long>short olduğundan error
System.out.println(s + " " + s2);
     
      long lo1 = i1.byteValue();
long lo2 = i1.shortValue();
long lo3 = i1.intValue();
long lo4 = i1.longValue();
        //dikkat edin long'ta hiç hata olmuyor.Çünkü veri kaybı söz konusu değil
System.out.println(lo1 + " " + lo2 + " " + lo3 + " " + lo4);
     
        //ParseXXX Metodu Kullanımı
        byte b1 = Byte.parseByte("10");
//byte b2 = Short.parseShort("10"); 
        //bunlarla ilgili bol bol örnek yapmak faydanıza olacaktır
        //Çünkü biz tek tek yazsak da sizin kodlamanızın önemi apayrıdır
     
float f11 = Byte.parseByte("10");
float f21 = Short.parseShort("10");
float f31 = Integer.parseInt("10");
float f41 = Long.parseLong("10");
//float f51 = Double.parseDouble("10"); double>float error
        System.out.println(f1 + " " + f2 + " " + f3 + " " + f4);  
    }
}

       Yukarıda metodları elimizden geldiğince yorum satırlarıyla anlatmaya çalıştık , fakat dediğimiz gibi örneklerle konuyu daha iyi pekiştirebilirsiniz diye düşünüyoruz. Şimdi de bazı özelliklere bakalım. Boxing, autoboxing, unboxing , autounboxing gibi bazı özelliklere de kısaaca göz atıp yazımızı tamamlayalım.

        Integer boxing = Integer.valueOf(10);
        Integer autoboxing =10;
        int unboxing = boxing.intValue();
        int autounboxing=10;

Değişken isimlerini barındırdığı özellik ile yazdık. Belki de bildiğimiz şeylerdir, fakat isim olarak nedir ne değildir bilmiyorduk, bununla birlikte yazımızı burada son veriyoruz. İyi çalışmalar

Kaynak
http://www.injavawetrust.com/pure-java-35-wrapper-03/
http://www.injavawetrust.com/pure-java-34-wrapper-classes-02/




Wrapper Classes

            Bugünkü konumuz Wrapper Classes olacak. Türkçe olarak sarmalanmış sınıflar diyebiliriz. Peki nedir bu sarmalanmış sınıflar ? Bildiğimiz gibi 2 tür değişkenimiz vardı. Obje ve İlkel . Bunları daha önceki yazılarımızda az da olsa yer vermiştik. Peki sarmalanmış sınıflar bu işin neresinde diye soracak olursanız şöyle cevap verebiliriz. Biz ilkel değişkenlerle çalıştığımız zaman (int, long gibi) bazen Objelere ihtiyaç duyabiliriz. Özellikle koleksiyon sınıfında bu gibi durumlar ortaya çıkabilir. İşte tam da bu durumda bu sınıflar ilkel değişkenimizi alıp, sarmalayıp ,obje yapar. Ve bu nedenle sarlanmış sınıflar diyoruz. Şimdi hangi tipin hangi objelere döndürüldüğüne ait bir resim paylaşacağız daha sonra da kodla bunu destekleyeceğiz.

Resim-1 
      
      Şimdi burada ne demek istiyor kısaca açıklamaya çalışalım. boolen değişkenini ele alalım. Bunun sarmalayıcı sınıfı Boolean'dır diyor. Peki hangi değerleri içine yazarsak sarmalayabiliriz sorusunun cevabı ise boolean ve Stringdir. Yani argüman olaran ya String yazmamız lazım ya da 'false/true' yazmamız lazım. Bunun dışındaki değişkenlerde hata verecektir derleyici. Mesela argüman olarak 10, 10.5 gibi nümerik değerler verdiğimizde derleyici hata verecektir. Ne istediğimizi şimdi koda dökelim. Daha iyi anlaşılacağını umuyorum.

public class Test {
public static void main(String[] args) {

Boolean b = new Boolean("tRuE"); //büyük hüçük harf farketmez
Boolean b2 = new Boolean("anything");
Boolean b3 = new Boolean(true);
Boolean b4 = new Boolean(false);
                //Boolean b5 = new Boolean(45);
                //Sadece String ve false/true değerleri alabilir
System.out.println("Boolean Test");
System.out.println(b + " " + b2 + " " + b3 + " " + b4);

               
Byte bt = new Byte((byte) 10);
Byte bt2 = new Byte("10");
                //Byte bt = new Byte(10); 
                //10'nun varsayılan değeri int olduğu için cast yapılmalı
System.out.println("Byte Test");
System.out.println(bt + " " + bt2);
                
                Short st= new Short((short)10);
                Short st2= new Short("10");
                //cast işlemi short için de geçerlidir
                System.out.println("Short Test");
System.out.println(st + " " + st2);

Character c = new Character('c');
                //Character c1 = new Character("ss");
                //character string alamaz,char alır!!
System.out.println("Character Test");
System.out.println(c);

Integer i1 = new Integer(10);
Integer i2 = new Integer("10");
System.out.println("Integer Test");
System.out.println(i1 + " " + i2);
                
                Long lo1 = new Long(10); 
Long lo2 = new Long("10");
System.out.println("Long Test");
System.out.println(lo1 + " " + lo2);

Float f1 = new Float(10);
Float f2 = new Float(10.5);
Float f4 = new Float("10.5");
Float f5 = new Float("10.5f");
System.out.println("Float Test");
System.out.println(f1 + " " + f2 +  " " + f4 + " " + f5);

                Double db1= new Double(10);
                Double db2=new Double(10.5);
                System.out.println("Double Test");
                System.out.println(db1+ "" + db2 + "");
}
}

    Kod içerisinde yorumları kısa kısa da olsa yazmaya çalıştık. Umarım anlamanıza vesile oluruz.