Hyunebee

변수의 초기화 본문

Java/Java의 정석

변수의 초기화

Hyunebee 2022. 3. 2. 18:39

변수의 초기화

우리는 변수를 생성하고 사용한다. 이때 처음으로 값을 저장하는 것을 변수의 초기화라고 한다.

멤버 변수(클래스 변수, 인스턴스 변수)는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화된다. 하지만 지역변수는 사용하기전에 반드시 초기화를 시켜주어야 한다.

 

멤버변수의 초기화 방법

1. 명시적 초기화

2. 생성자

3. 초기화블럭

 

명시적 초기화

보통 우리가 변수를 사용할때 선언과 동시에 초기화하는 것을 명시적 초기화라고 한다. 

String color = "AAA";   

 

초기화 블럭

-static

-instance 

 

static 초기화 블럭은 클래스 생성시 같이 생성된다.

instance 초기화 블럭은 주로 생성자에 사용하면 공통으로 수행돼야 하는 코드를 넣는데 사용한다.

 

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

클래스변수(static 변수)의 초기화시점 - 클래스가 처음 로딩될 때 단 한번 초기화된다.

인스턴스변수의 초기화시점 - 인스턴스가 생성될 때마다 각 인스턴스별로 초기화가 이루어 진다.

 

클래스변수의 초기화 단계 : 기본값 - 명시적 초기화 - 클래스 초기화 블럭

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

 

class init{
    static int staticValue = 1;
    int instanceValue = 1;
    static {
        staticValue = 2;
    }

    {
        instanceValue = 2;
    }

    init(){
        instanceValue = 3;
    }

}

 

초기화 과정을 살펴보자

 

클래스 초기화

기본값 명시적 초기화 초기화 블럭
staticValue = 0  staticValue = 1 staticValue = 2

여기서 staticValue의 값이 0인 이유는 멤버변수는 초기화를 따로 해주지 않을경우 기본값으로 들어가게 된다.

 

인스턴스 초기화

기본값 명시적 초기화 인스턴스 초기화블럭 생성자 초기화
instanceValue = 0 instanceValue = 1 instanceValue = 2 instanceValue = 3

 

클래스 초기화 순서부터 인스턴스 초기화까지 7단계로 진행된다 클래스 변수는 클래스가 메모리에 올라가면서 부터 시작된다. 인스턴스 초기화는 인스턴스 생성을 할때 차례대로 수행된다. 

'Java > Java의 정석' 카테고리의 다른 글

오버라이딩  (0) 2022.03.03
클래스간 관계 결정 - 상속과 포함  (0) 2022.03.03
생성자  (0) 2022.03.02
오버로딩  (0) 2022.03.01
객체 지향 프로그래밍  (0) 2022.02.27