[static 블락]
-동일 클래스 안의 main보다 먼저 실행됨 즉 main에 실행코드가 없어도 static블락안에 있는 내용이 실행됨
 단, 다른 클래스에 main이 있는 경우는
 다른 클래스의 main이 순차적으로 실행되다 ***static블락이 있는 클래스를 인스턴스화 할때***
 그때 ****생성자보다 먼저  static블락이 실행된다.*******
Static 블락안에서는 정적 멤버만 사용가능
모든객체가 공유한다.

 * static형식 :
     static{

                  이 안엔 정적멤버만 사용 가능
                             }

public class StaticBlock {

      public StaticBlock() {
                   System.out.println("staticBlock의 생성자");
                            }

//인스턴스형 멤버
int instanceVar;
void instanceMethod() {}

//정적멤버
static int staticVar;
static void staticMethod() {
                int localVar = 10;   //지역변수
                 System.out.println("정적 메소드:"+localVar);
       }

////////static 블락//////////////////////////
static {
            System.out.println("[static블락 시작]");
            System.out.println(instanceVar);  인스턴스형 멤버는 못옴
            System.out.println(staticVar);
            staticMethod();    정적멤버 가능
            int localvar = 10;
            System.out.println("static블락에서 선언한 지역변수:" +localvar );
            System.out.println("[static블락 끝]");
} //////////////////////////////////////////


main

       System.out.println("[StaticBlockApp의 메인 메소드]");    <--- 컴퓨터는 메인 위에서부터 차례로 실행하는데
        StaticBlock sb=new StaticBlock();  <-- 요  생성자 보다 static블락이 먼저 실행됨 

 

+ Recent posts