1. 변수의 초기화

  • 변수를 선언하고 처음으로 값을 저장하는 행위를 일컫는 말이다.
  • 선언과 동시에 초기화하는 것이 적절한 초기화이다.
  • 멤버 변수는 자료형에 기본값으로 자동 초기화되면 바로 사용 가능하다.
  • 지역 변수는 반드시 초기화해야 사용할 수 있다.

2. 명시적 초기화 (explicit initialization)

명시적 초기화 : 변수 선언과 동시에 초기화하는 것이다.

명시적 초기화는 가장 우선적으로 고려되어야 하며 가장 간단한 초기화 방법이다.

int a = 5;
Sample sm = new Sample();

3. 초기화 블록(initialization block)

초기화 블록은 두 가지 종류가 있다. 인스턴스 초기화 블록과 클래스 초기화 블록이 있다.

초기화 블록 안에는 메서드와 같이 조건문, 반복문, 예외 처리 등의 작업을 할 수 있다.

class Sample {
    private int a;
    private static int b;
    private int c;
    
    // 인스턴스 초기화
    {
    	this.a = 0;
    }
    
    // 클래스 초기화
    static {
    	Sample.b = 0;
    }
    
}
  • 인스턴스 블록은 모든 생성자에 공통 코드로 넣는 데 사용한다.
  • 생성자 보다 인스턴스 초기화 블록이 먼저 수행된다.
  • 클래스 초기화 블록은 클래스가 메모리에 처음 로딩될 때 한 번만 수행된다.

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

4.1. 시점

클래스 변수의 초기화 : 클래스가 처음 로딩될 때 단 한번 실행된다.

인스턴스 변수의 초기화 : 인스턴스가 생성될 때마다 각 인스턴스 별로 생성된다.

4.2. 순서

클래스 변수의 초기화 : 기본 값 -> 명시적 초기화 -> 클래스 초기화 블록

인스턴스 변수의 초기화 : 기본 값 -> 명시적 초기화 -> 인스턴스 초기화 블록 -> 생성자

class Sample {

    private int a;
    private int b;
    private int c;
    
    {
      System.out.println("인스턴스 초기화 블록");      
    }
    
    static {
        System.out.println("클래스 초기화 블록");
    }
    
    Sample() {
      System.out.println("인스턴스 생성");
    }
}

// 결과
// 클래스 초기화 블록
// 인스턴스 초기화 블록
// 인스턴스 생성

'개발 언어 > Java' 카테고리의 다른 글

[Java] Package와 import  (0) 2021.08.24
[Java] 상속  (0) 2021.08.24
[Java] 생성자  (0) 2021.08.24
[Java] 오버로딩과 오버라이딩  (0) 2021.08.24
[Java] 클래스와 객체  (0) 2021.08.20

+ Recent posts