[JAVA] 변수의 초기화란? [변수를 선언하고 처음으로 값을 저장하는 것]
1. 변수의 초기화란? 변수를 선언하고 처음으로 값을 저장하는 것을 '변수의 초기화'라고 한다. 변수의 초기화는 경우에 따라 필수적이기도, 선택이기도 하지만 가능하면 선언과 동시에 적절한
yermi.tistory.com
1. 변수를 초기화하는 방법
변수를 초기화 하는 방법에는 생성자 외에도 명시적 초기화, 초기화 블럭이 있다.
2. 명시적 초기화(explicit initalization)
변수를 선언과 동시에 초기화 하는 것을 명시적 초기화라고 한다.
명시적 초기화는 간단하고 명료하지만 복잡한 초기화에는 적합하지 않다.
Class Car {
int door = 4; // 기본형 변수의 초기화
Engine e = new Engine(); // 참조형 변수의 초기화
}
3. 초기화 블럭(initalization block)
초기화 블럭에는 '클래스 초기화 블럭'과 '인스턴스 초기화 블럭'이 있다.
클래스 초기화 블럭 : 클래스변수의 복잡한 초기화에 사용된다.
인스턴스 초기화 블럭 : 인스턴스변수의 복잡한 초기화에 사용된다.
인스턴스 초기화 블럭은 클래스 내에 블럭 {}을 만들고 그 안에 코드를 작성하기만 하면 된다.
클래스 초기화 블럭은 인스턴스 초기화 블럭 앞에 static을 덧붙이면 된다.
Class InitBlock {
static { /* 클래스 초기화 블럭 */ }
{ /* 인스턴스 초기화 블럭 */ }
} // 초기화 블럭 내에서는 메서드처럼 조건문, 반복문, 예외처리구문이 가능하다.
클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행되며, 인스턴스 초기화 블럭은 생성자와 같이 인스턴스를 생성할 때 마다 수행된다. 참고로, 생성자 보다 인스턴스 초기화 블럭이 먼저 수행된다.
초기화 블럭은 모든 생성자에서 공통으로 수행되어야 하는 코드에 활용하면 좋다.
// 인스턴스 초기화 블럭
{
count++;
serialNo = count;
}
// 생성자
Car() {
color = "White";
gearType = "Auto";
}
Car(String color, String gearType) {
this.color = color;
this.gearType = gearType;
}
- 클래스 초기화 블럭 사용 예시
[JAVA] 비초기화 상수(blank constant) 생성하기 [static final 초기화 시점 바꾸기]
1. 비초기화 상수란? static final로 변수를 전역상수로 사용하고 싶으나, 상황에 따라 입력 값이 달라야 할 경우에 사용한다. ex) 운영체제에 따라 값이 달라야 할 경우 * 상수는 대문자에 스네이크
yermi.tistory.com
참고문헌 : 남궁성(2016), Java의 정석, 도우출판