본문 바로가기

Java

Java 변수의 초기화

1. 변수의 초기화: 변수를 선언하고 처음으로 값을 저장하는 것으로 경우에 따라 필수적이기도하고 선택적이기도함(초기화 권장)

 

2. 지역변수(lv)초기화: 수동 초기화 필수

 

3. 멤버 변수(cv, iv) 초기화

 

  1) 초기화 순서

    a. 클래스 변수(cv) 초기화 -> 인스턴스 변수(iv) 초기화

    b. 자동 초기화 -> 명시적 초기화 -> 초기화 블럭, 생성자

 

  2) 초기화 시점

    a. 클래스 변수(cv) 초기화: 클래스가 처음 로딩될 때 단 한번 초기화

    b. 인스턴스 변수(iv) 초기화: 인스턴스가 생성될 때 마다 초기화

 

  3) 초기화 방법

    a. 자동 초기화: 자동적으로 변수의 자료형에 맞는 기본값으로 초기화 됨

자료형 기본값
boolean false
char '\u0000'
byte, short, int 0
long 0L
float 0.0f
double 0.0d 또는 0.0
참조형 null

 

 

    b. 명시적 초기화(explicit initialization): 변수 선언과 동시에 대입 연산자(=)를 사용하여 간단한 초기화

class Car {
    int door = 4; // 기본형 변수의 초기화
    Engine e = new Engine(); // 참조형 변수의 초기화, 객체를 넣는 것이 초기화
}

 

 

    c. 초기화 블럭(initialization block): 블럭'{}'을 사용하여 복잡한 초기화(ex. 여러 문장 넣기)

클래스 초기화 블럭 인스턴스 초기화 블럭
{} static{}
클래스 변수의 복잡한 초기화에 사용 인스턴스 변수의 복잡한 초기화에 사용

 

    d. 생성자(constructor): 인스턴스 변수(iv) 초기화, 복잡한 초기화

 

  4) 예제

class Init {
    static int cv = 1; // 클래스 변수(cv) 명시적 초기화
    int iv = 1; // 인스턴스 변수(iv) 명시적 초기화
    
    // 클래스 초기화 블럭
    static {
    	cv = 2;
    }
    
    // 인스턴스 초기화 블럭
    {
    	iv = 2;    
    }
    
    // 생성자
    Init() {
    	iv = 3;
    }
}

 

진행 순서 1 2 3 4 5 6 7
변수 클래스 변수 인스턴스 변수
초기화 방법 자동 초기화 명시적 초기화 클래스 초기화 블럭 자동 초기화 명시적 초기화 인스턴스 초기화 블럭 생성자
값 변화 cv = 0 cv = 1 cv = 2 iv = 0 iv = 1 iv = 2 iv = 3