3 Nisan 2013 Çarşamba

STATİC BLOK

Static blok


Java da "static" anahtar kelimesi kullanılarak; değişken,metot,blok ve hatta sınıf tanımlanabilir.
Sınıflar için "static" sadece inner class (iç sınıf) kullanımında geçerlidir.
Static değişkenler javada sınıf değişkenleri (class variable) olarak bilinir.Nesneye bağımlı değildir ve sınıfın ismiyle erişilir.
Static metodlar da sınıf metodlarıdır,nesne yaratmadan direk sınıf ismiyle çağırılır,tamami ile nesneden bağımsızdır.Static metotlar için en önemli nokta;static bir metot içerisinden static olmayan bir değişkene veya bir metoda erişilemeyeceğidir.Ama bunun tam tersi geçerlidir yani static olmayan bir metot içerisinden static bir değişkene veya metoda erişilebilir.
Bu önemli noktayı açıklamak gerekirse;bildiğiniz gibi normal static olmayan metotlar nesneye bağımlıdır ve nesne üzerinden çağrılırlar ama static metodlar yukarda bahsettiğimiz gibi nesneden bağımsızlardır.Bu yüzden static bir metot içerisinden nesneye bağımlı bir metot çağıramayız çünkü ortada nesne yoktur.
Ve bir önemli nokta daha static değişkenler,bloklar sınıf yüklenirken (class load) oluşturulur ve sadece bir kez oluşturulur.
Static bloklar çok kullanılan bir yapı değildir,o yüzden çok bilinmezler.
Kullanım şekli :
public class Test {
static{
System.out.println("static block..");
}
}
Static bloklar yukarda bahsedildiği gibi sınıf JVM (java virtual machine) tarafından class loader ile yüklenirken çalıştırılır.


Ne için kullanılır ?



Static bloklar "initializer" gibi düşünülebilir,static değişkenlere ilk değerlerini vermek için kullanılır.
Örneğin:
public class Test {
static int a;
static{
a = 5;
}
}
Şöyle bir soru aklınıza gelebilir,neden static değişkeni oluştururken direk değerini vermiyoruz da blok içinde vermeye çalışıyoruz ?
Çünkü blok içinde dinamik birşey çalıştırmak isteyebilirz,örneğin if yapısını kullanabiliriz,bu yüzden değişkenin değeri bir koşula bağlı olabilir veyahut static bir dizi değişkenimizin olduğunu düşünelim,burdada for döngü yapısını kullanarak static bir dizinin ilk değerlerini vermek isteyebiliriz ve bunu sadece static blok kullanarak yapabiliriz.
Static blokları bir metot gibi düşünmek gerekir,sınıflar yüklenirken ve sadece bir kez çağrılan bir metot gibi...

Hiç yorum yok:

Yorum Gönder