본문 바로가기
▶개발/JAVA

[JAVA] 변수의 초기화 순서(초기화블럭)

by 브라더 준 2018. 12. 18.

[JAVA] 변수의 초기화 순서 예제(초기화블럭)


@변수의 초기화 시점

- 변수는 클래스 변수와 인스턴스 변수로 나눠진다. (http://markim94.tistory.com/136 게시물의 2번내용 참고)

- 클래스 변수는 클래스가 처음 로딩될 때 한번만 초기화된다.

- 반면에 인스턴스 변수는 인스턴스가 생성될 때마다 인스턴스별로 초기화가 이뤄진다.


@예제

class Car{
    int instanceVariable = 1; // 인스턴스 변수
    static int staticVariable =1 ; // 클래스 변수(static, 공유)    

     // 인스턴스 초기화 블럭
    {        instanceVariable = 2;           }
    // 클래스 초기화 블럭, 앞에 static이 붙음.
    static{ staticVariable = 2; }

    // 생성자, 인스턴스 변수 초기화 과정이 들어있음.
    Car(){
        instanceVariable = 3; 
    }

}

순서는 기본값->명시적초기화->초기화블럭->생성자(생성자는 인스턴스에만 해당)


# 클래스 변수 초기화 

1) 해당 클래스가 처음 로딩될 때, staticVariable은 0으로 기본값을 갖는다.

2) 명시적 초기화 적용으로 staticVariable은 0->1이 된다.

3) 클래스 초기화 블럭에서 staticVariable은 1->2이 된다.


# 인스턴스 변수 초기화

1) 인스턴스 생성

2) 기본값으로 instanceVariable은 0이 된다.

3) 명시적초기화로 instanceVariable은 0>1이 된다.

4) 인스턴스초기화블럭에서 instanceVariable은 1->2이 된다.

5) 생성자에서 instanceVariable은 2->3이 된다.

반응형