변수의 초기화
변수의 초기화는 경우에 따라서 필수적이기도 하고 선택적이기도 하지만 가능하면 선언과 동시에 적절한 값으로 초기화하는 것이 바람직하다.
멤버 변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어지므로 초기화하지 않고 사용해도 되지만 지역변수는 사용하기 전에 반드시 초기화해야 한다.
멤버 변수(클래스 변수와 인스턴스 변수)와 배열의 초기화는 선택이지만, 지역변수의 초기화는 필수이다.
각 타입의 기본값
자료형 | 기본값 |
boolean | false |
char | '\u0000' |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d || 0.0 |
참조형 | null |
멤버변수의 초기화
지역변수와 달리 멤버 변수는 각 타입의 기본값으로 자동 초기화된다. 그다음에 명시적 초기화, 초기화 블럭, 생성자의 순서로 초기화된다. 그리고 클래스 변수가 인스턴스 변수보다 먼저 초기화된다.
- 클래스 변수 초기화 -> 인스턴스 변수 초기화
- 자동 초기화 -> 명시적 초기화 -> 초기화 블럭, 생성자
명시적 초기화(explicit initialization)
변수를 선언과 동시에 초기화하는 것을 명시적 초기화라고 한다. 가장 기본적이면서도 간단한 초기화 방법이므로 여러 초기화 방법 중에서 가장 우선적으로 고려되어야 한다.
class Car {
int door = 4; // 기본형 변수의 초기화
Engine e = new Engine(); // 참조형 변수의 초기화
}
명시적 초기화가 간단하고 명료하긴 하지만, 보다 복잡한 초기화 작업이 필요할 때는 '초기화 블럭(
initialization block)' 또는 생성자를 사용해야 한다.
초기화 블럭(initialization block)
초기화 블럭에는 '클래스 초기화 블럭'과 '인스턴스 초기화 블럭' 두 가지 종류가 있다. 클래스 초기화 블럭은 클래스 변수의 초기화에 사용되고 인스턴스 초기화 블럭은 인스턴스 변수의 초기화에 사용된다.
- 클래스 초기화 블럭 - 클래스 변수의 복잡한 초기화에 사용된다.
- 인스턴스 초기화 블럭 - 인스턴스 변수의 복잡한 초기화에 사용된다.
초기화 블럭을 작성하려면 인스턴스 초기화 블럭은 단순히 클래스 내에 블럭{ }을 만들고 그 안에 코드를 작성하기만 하면 되며 클래스 초기화 블럭은 인스턴스 초기화 블럭 앞에 static을 덧붙이기만 하면 된다.
'Java의 정석' 카테고리의 다른 글
클래스 간의 관계 1 (0) | 2022.03.24 |
---|---|
상속 (0) | 2022.03.23 |
객체 지향 개념 - 15 this() (0) | 2022.03.21 |
객체 지향 개념 - 14 this() (0) | 2022.03.18 |
객체 지향 개념 - 13 매개변수가 있는 생성자 (0) | 2022.03.17 |