[자바] 변수의 초기화

June·2021년 1월 1일
0

자바

목록 보기
10/36

멤버변수(클래스변수와 인스턴스변수)와 배열의 초기화는 선택적이지만, 지역변수의 초기화는 필수적이다.

멤버변수의 초기화 방법
1. 명시적 초기화(explicit initialization)
2. 생성자(constructor)
3. 초기화 블럭(initialization block)

  • 인스턴스 초기화 블럭: 인스턴스변수를 초기화 하는데 사용
  • 클래스 초기화 블럭: 클래스변수를 초기화 하는데 사용

명시적 초기화(explicit initialization)

변수를 선언과 동시에 초기화하는 것을 명시적 초기화라고 한다.

class Car {
    int doot = 4;               //기본형 변수의 초기화
    Engine e = new Engine();    //참조형 변수의 초기화
}

초기화 블럭(initialization block)

클래스 초기화 블럭 : 클래스변수의 복잡한 초기화에 사용된다.
인스턴스 초기화 블럭 : 인스턴스변수의 복잡한 초기화에 사용된다.

초기화 블럭을 작성하려면, 인스턴스 초기화 블럭은 단순히 클래스 내에 블럭{} 만들고 그 안에 코드를 작성하기만 하면 된다. 그리고 클래스 초기화 블럭은 인스턴스 초기화 블럭 앞에 단순히 static을 덧붙이기만 하면 된다.

class InitBlock {
    static { /* 클래스 초기화블럭 입니다. */ }
    
    { /* 인스턴스 초기화블럭 입니다. */ }
}

클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행되며, 인스턴스 초기화 블럭은 생성자와 같이 인스턴스를 생성할 때 마다 수행되다. 그리고 생성자 보다 인스턴스 초기화 블럭이 먼저 수행된다.

멤버변수의 초기화 시기와 순서

클래스 변수의 초기화시점: 클래스가 처음 로딩될 때 단 한번 초기화 된다.
인스턴스변수의 초기화시점: 인스턴스가 생성될 때마다 각 인스턴스별로 초기화가 이루어진다.

클래스 변수의 초기화 순서: 기본값 -> 명시적초기화 -> 클래스 초기화 블럭
인스턴스변수의 초기화순서: 기본값 -> 명시적초기화 -> 인스턴스 초기화 블럭 -> 생성자

0개의 댓글