14 Haziran 2012 Perşembe

STATİC BLOK


Static kod blokları static değişkenlere ilk değer atamalarını yapmak için kullanılan kod bloklarıdır. Bunlara literatürde “static initializer” denmektedir. Static kod blokları sınıf değişkenleri belleğe yüklendikten hemen sonra işletilirler. JVM, o sınıfa ait bir nesne oluşturulmadan önce static kod bloklarının işletimini garanti eder.

import java.util.Random;
 public class StaticInitializer {
 
         private static int dizi[];
         private static int boy = 10;
 
         static {
 
                 dizi = new int[boy];
                 Random rnd = new Random();
 
                 for(int i=0; i < boy; i++)
                          dizi[i] = rnd.nextInt(100);
         }
}
Yukarıdaki koda baktığımızda static kod bloğu içerisinde 0 ile 99 arasında rastgele belirlenmiş 10 adet sayıdan oluşan bir dizi oluşturulduğunu görüyoruz. Bu kod bloğu sayesinde, bu sınıfın değişkeni olan dizi değişkeni yaratıldığı anda 10 tane rastgele sayı ile doldurulmaktadır. Static kod blokları içerisinde de, static metotlarda olduğu gibi static olmayan sınıf öğelerine erişmek mümkün değildir. Static kod blokları yaygın olarak kullanılmadığından daha fazla detaya inmeye gerek yok diye düşünüyorum.
Statik blok için bir başka örneği inceleyecek olursak eğer:

public class StatikBlok{
   
       public static String sampiyon = "Sampiyon Cimbom.";
       
      static {
        System.out.println("Birinci statik blok : " + sampiyon);
    }

    public StatikBlok(){
        String sampiyon=kanaraya;
        System.out.println("Kurucu Metod..");
Static kod blokları static değişkenlere ilk değer atamalarını yapmak için kullanılan kod bloklarıdır. Bunlara literatürde “static initializer” denmektedir. Static kod blokları sınıf değişkenleri belleğe yüklendikten hemen sonra işletilirler. JVM, o sınıfa ait bir nesne oluşturulmadan önce static kod bloklarının işletimini garanti eder.

package com.javagelistir.makale;
import java.util.Random;
 
public class StaticInitializer {
 
         private static int dizi[];
         private static int boy = 10;
 
         static {
 
                 dizi = new int[boy];
                 Random rnd = new Random();
 
                 for(int i=0; i < boy; i++)
                          dizi[i] = rnd.nextInt(100);
         }
}
Yukarıdaki koda baktığımızda static kod bloğu içerisinde 0 ile 99 arasında rastgele belirlenmiş 10 adet sayıdan oluşan bir dizi oluşturulduğunu görüyoruz. Bu kod bloğu sayesinde, bu sınıfın değişkeni olan dizi değişkeni yaratıldığı anda 10 tane rastgele sayı ile doldurulmaktadır. Static kod blokları içerisinde de, static metotlarda olduğu gibi static olmayan sınıf öğelerine erişmek mümkün değildir. Static kod blokları yaygın olarak kullanılmadığından daha fazla detaya inmeye gerek yok diye düşünüyorum.
Statik blok için bir başka örneği inceleyecek olursak eğer:

package statikblok;


public class StatikBlok{
   
        public static String ilk = "ilk çalışan alana gider";
        
       static {
        System.out.println("Birinci statik blok : " + ilk);
    }

    public StatikBlok(){
       String sampiyon="kanarya";
        System.out.println("Kurucu Metod..");
    }

    public static String ikinci = "ikinci çalışan alana gider";

    static {
        System.out.println("Ikinci satatik blok : " +ikinci);
    }

    public static void main(String[] args){
        System.out.println(ilk);
         StatikBlok sb = new StatikBlok();
        StatikBlok.statikMethod2();
    }

    static {
        statikMethod();
        System.out.println("Üçüncü statik blok çalisti..");
    }

    public static void statikMethod() {
        System.out.println("statikMetod calisti..");
    }

    public static void statikMethod2() {
        System.out.println("statikMetod2 calisti..");
    }
}


Yukarıda ki örneği inceleyecek olursak görüldüğü gibi birden fazla statik blok tanımlanmıştır ve bu statik blokların çalışması ilk bloktan itibaren çalışmaya başlamaşdır.Yani main metodu ilk olarak çalıştırılmayacaktır.Öncelikle ilk statik blok sonra ikincisi şeklinde bloklar bittikten sonra ise main metodu çalıştırılacaktır.Bir diğer husus da static blok içinde tanımlanan değişkenleri static olarak siz yazmasanızda zaten staticdir.
Çıktısı ise;

Birinci statik blok : ilk çalışan alana gider
Ikinci satatik blok : ikinci çalışan alana gider
statikMetod calisti..
Ucuncu statik blok çalisti..
ilk çalışan alana gider
Kurucu Metod..
statikMetod2 calisti..

Şeklindedir...


Hiç yorum yok:

Yorum Gönder

Yorumlar