본문 바로가기

JavaCode(review)

Static initialization block

반응형

POINT]

constructor 혹은 other methods보다 우선으로 print out된다.

 

//SIBTest Class		// static initialization block 설명위한

package com.timbuchalka;

public class SIBTest {
    public static final String owner;       // public static final field

    static {                     //static initialization block			V
        owner = "tim";
        System.out.println("SIBTest static initialization block called");
    }

    public SIBTest() {          //constructor
        System.out.println("SIB constructor called");
    }

    static {                //static initialization block		V
        System.out.println("2nd initialization block called");
    }

    public void someMethod() {          //another method
        System.out.println("someMethod called");
    }
}

//Main class

package com.timbuchalka;

public class Main {

    public static void main(String[] args) {

        System.out.println("Main method called");
        SIBTest test = new SIBTest();				//object, call constructor   V
        test.someMethod();							//another  method
        System.out.println("Owner is " + SIBTest.owner);		// ClassName.owner
    }						
}				//참고)static method는 public static feild directly하게 부를수 있음.
						//object 굳이 설정 없어도

//Output
D:\IT\JDK\jdk11.0.6_10\bin\java.exe "-javaagent:D:\IT\IDEA\IntelliJ IDEA Community Edition 2020.1\lib\idea_rt.jar=51097:D:\IT\IDEA\IntelliJ IDEA Community Edition 2020.1\bin" -Dfile.encoding=UTF-8 -classpath D:\IT\Naming-Conventions-and-Packages-Final-Part-2-and-Static-Initializers-Source-code\out\production\Final com.timbuchalka.Main
Main method called
SIBTest static initialization block called		// V
2nd initialization block called					// V
SIB constructor called			//Constructor전에 static initialization block이 먼저 출력됨.V
someMethod called				//another method
Owner is tim

Process finished with exit code 0