변수의 초기화

수동 / 자동 초기화

  • 지역 변수수동으로 초기화 해야합니다.

    • 지역 변수가 동작하는 스택 메모리는 재사용이 빈번하기 때문에 매번 초기화 해주면 성능이 떨어집니다.

    • 그래서 그냥 해당 메모리에 있는 값으로 덮어 씌웁니다.

    • 근데 해당 주소에 어떠한 값이 있는지 모르기 때문에 Java는 개발자에게 수동으로 초기화 하라고 요구합니다.

    • C 언어에서는 이를 garbage value 라 부릅니다.(C언어와 Java의 차이를 비교하면 이해가 쉽습니다.)

  • 멤버변수(인스턴스 변수, 클래스 변수)는 자동으로 초기화 됩니다.

멤버 변수의 초기화

  • 클래스 변수 : 클래스가 처음 로딩될 때 단 한번만 초기화 됩니다.

  • 인스턴스 변수 : 인스턴스가 생성될 때 마다 초기화 됩니다.

초기화 방법

명시적 초기화(=)

class Tv11_1 {
    boolean power = false;    // 기본형 변수의 초기화
    int channel = 1;          // 기본형 변수의 초기화
    Audio audi = new Audio(); // 참조형 변수의 초기화, 참조형은 객체주소 or null 로 초기화!!
    // 참조형의 기본값은 null 입니다!!
    ...
}

초기화 블럭

class Tv11_2 {
    static boolean power;
    int channel; 
    
    // 클래스 초기화 블럭
    static 
    {
        power = false;
    }
    
    // 인스턴스 초기화 블럭
    {
        channel = 1;  
    }
    ...
}

생성자 초기화

class Tv11_3 {
    // 속성 : 변수 선언
    boolean power; // 전원상태
    int channel;  // 채널
    String color; // 색깔
    long price; // 가격
    
    // 위 속성에서 필수로 초기값이 필요한 값들을 초기화 해주는 기본 생성자
    Tv11_3() {
        this.power = false;
        this.channel = 1;
    }
    ... 
}

Ref. Java의 정석 기초편 Chapter6(38, 39, 40, 41)

Ref. 변수의 초기화

Last updated