Java 2 tür Initialize blok vardır.
->Static Block
->Instance Block
Static initialize blocklar main metodundan önce sınıf yüklendiğinde çalışacaktır.
Static blocklar ilk önce ve sadece 1 kereliğine çalışır.
Instance blocklar ilgili obje/instance oluşunca çalışacaktır.
Instance blocklar her obje oluşturulduğunda tekrar çalışacaklardır.
class Test { } public class InitializeTest { // static initialize block // static initialize blocklar main metodundan once sinif yuklendiginde // calisacaktir. // birden fazla initialize block oldugunda tanimlanma sirasina gore // calisacaktir. static { System.out.println("static initialize block 1"); } static { System.out.println("static initialize block 2"); } static { System.out.println("static initialize block 3"); } // instance initialize block // instance initalize blocklar ilgili sinif tipinde obje olusunca calisacaktir. // tanimlandigi sirada calisirlar. // { System.out.println("instance initialize block"); } // instance initialize block { System.out.println("instance initialize block2"); } InitializeTest(){ System.out.println("Constructor!!!"); } public static void main(String[] args) { System.out.println("main"); InitializeTest test = new InitializeTest(); InitializeTest test2 = new InitializeTest(); //kactane obje olusturursak okadar kez instance blocklar calisacaktir. //Bir obje oluşuturulduğunda ilk önce instance block çalışır daha sonra constuctor çalışır. /* Çıktı: static initialize block 1 static initialize block 2 static initialize block 3 main instance initialize block instance initialize block2 Constructor!!! instance initialize block instance initialize block2 Constructor!!! */ } }