static, instance block

static, instance block

블록의 쓰임새를 알 수 있다.

·

1 min read

static block

클래스가 로딩되고 클래스 변수가 준비된 후 자동으로 실행되는 블록

하나의 클래스 안에 여러개의 static block 존재할 수 있음

instance block

인스턴스가 생성된 후 자동으로 실행되는 블록입니다.

하나의 클래스 안에 여러개의 instance block이 존재 가능하며 생성자 호출 이전에 동작

호출 순서

  1. 클래스 로딩

  2. 클래스 변수 method 영역 할당(static, non-static zone 각각 보관)

  3. static block 실행

  4. 인스턴스 생성

  5. instance block 실행

  6. 생성자(constructor) 호출

예제

public class NonStaticTest {
    public NonStaticTest(){
        System.out.println("3.생성자 호출됨");
    }
    {
        System.out.println("2.인스턴스 블록 실행됨");
    }
    static {
        System.out.println("1.스태틱 블록 실행됨");
    }

    public static void main(String[] args) {
        int a=10, b=20;
        NonStaticTest nonStaticTest= new NonStaticTest();
        NonStaticTest nonStaticTest2= new NonStaticTest();
        System.out.println(nonStaticTest.hap(a, b));
        {
            a=20;
            b=30;
            System.out.println(nonStaticTest.hap(a, b));
        }

        System.out.println(nonStaticTest.hap(a, b));
    }

    public int hap(int a, int b) {
        return a + b;
    }
}
1.스태틱 블록 실행됨
2.인스턴스 블록 실행됨
3.생성자 호출됨
2.인스턴스 블록 실행됨
3.생성자 호출됨
30
50
50