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...