Java da Static ve Instance Initialize Bloklar

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!!!
*/
	}

}

#initialize-block, #instance-block, #java, #java-dersleri, #static-block