Java 08. 객체지향 프로그래밍 Ⅰ 변수 - swkim0128/PARA GitHub Wiki


type: Java archive: false

변수의 초기화

변수의 초기화


변수를 선언하고 처음으로 값을 저장하는 것을 '변수의 초기화'라고 한다. 가능하면 선언과 동시에 적절한 값으로 초기화 하는 것이 바람직하다.

멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어지므로 초기화하지 않고 사용해도 되지만 지역변수는 사용하기 저에 반드시 초기화를 해야 한다.

멤버변수(클래스변수와 인스턴스변수)와 배열의 초기화는 선택적이지만, 지역변수는 반드시 사용하기 전에 반드시 초기화 해주어야 한다.

멤버변수의 초기화 방법

  1. 명시적 초기화(explicit initialization)
  2. 생성자(constructor)
  3. 초기화 블럭(initialization block)
  • 인스턴스 초기화 블럭 : 인스턴스변수를 초기화 하는데 사용.
  • 클래스 초기화 블럭 : 클래스변술르 초기화 하는데 사용.

명시적 초기화(explicit initialization)


변수를 선언과 동시에 초기화하는 것을 명시적 초기화라고 한다. 가장 기본적이면서도 간단한 초기화 방법이므로 여러 초기화 방법 중에서 가장 우선적으로 고려되어야 한다.

class Car {
    int door = 4;
    Engine e = new Engine();
}

명시적 초기화가 간단하고 명료하긴 하지만, 보다 복잡한 초기화 작업이 필요할 때는 '초기화 블럭(initialzation block)' 또는 생성자를 사용해야한다.

초기화 블럭(initialization block)


초기화 블럭에는 '클래스 초기화 블럭'과 '인스턴스 초기화 블럭' 두 가지 종류가 있다.

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

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

	{ /* 인스턴스 초기화블럭 입니다. */ }

}

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

인스턴스 초기화 블럭은 잘 사용되지 않지만, 클래스의 모든 생성자에게 공통적으로 수행되어져야 하는 코드가 있는 경우 생성자에 넣지 않고 인스턴스 초기화 블럭에 넣어 두면 코드의 중복을 줄일 수 있어서 좋다.

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


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

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

⚠️ **GitHub.com Fallback** ⚠️