1. 변수의 초기화
변수를 선언하고 처음으로 값을 저장하는 것을 변수의 초기화라고 한다. 변수의 초기화는 경우에 따라 필수가 아닐 수도 있지만 가능하면 선언과 동시에 초기화 하는 것이 바람직하다.
클래스의 멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞춰 기본값으로 초기화된다. 하지만 지역변수의 경우 자동으로 초기화 되지 않기 때문에 사용전에 반드시 초기화 해야한다. 초기화 하지 않는경우 컴파일 에러가 발생한다.
변수의 초기화 방법에는 다음과 같은 방법들이 있다.
- 명시적 초기화 (explicit initialization)
- 생성자 (constructor)
- 초기화 블럭 (initialization block)
2. 명시적 초기화 (explicit initialization)
변수 선언과 동시에 초기화 하는 것을 의미한다. 가장 기본적이고 간단한 초기화 방식이다.
3. 초기화 블럭 (initialization block)
클래스 초기화 블럭: 클래스 변수의 복잡한 초기화에 사용된다.
인스턴스 초기화 블럭: 인스턴스 변수의 복잡한 초기화에 사용된다.
인스턴스 초기화 블럭의 경우 단순히 클래스 안에 중괄호로 블럭을 만들고 그 안에 코드를 작성하기만 하면된다. 클래스 초기화 블럭의 경우 인스턴스 초기화 블럭 앞에 static을 붙이면 된다.
class Example {
static {
// 클래스 초기화 블럭
}
[
// 인스턴스 초기화 블럭
]
}
클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행되며, 인스턴스 초기화 블럭은 생성자와 같이 인스턴스를 생성할 때 수행된다.
초기화 블럭은 변수 초기화에 복잡한 로직이 필요한 경우나 여러 생성자에 동일한 로직이 반복되어서 초기화에 사용되는 경우 해당 코드를 생성자에서 제외하고 초기화 블럭을 만들어서 중복 코드를 제거하는 데도 사용할 수 있다.
4. 멤버변수의 초기화 시기와 순서
- 초기화 시기
클래스 변수의 초기화 시점: 클래스 처음 로딩 시에 단 한번 초기화 된다.
인스턴스 변수의 초기화 시점: 인스턴스가 생성될 때마다 각 인스턴스 별로 초기화가 이루어진다.
- 초기화 순서
클래스 변수의 초기화 순서: 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭
인스턴스 변수의 초기화 순서: 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블럭 -> 생성자
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] 상속 (Inheritance) (0) | 2021.11.04 |
---|---|
[JAVA] HashMap vs HashTable (0) | 2021.10.29 |
[JAVA] 생성자 (Constructor) (1) | 2021.09.02 |
[JAVA] 오버로딩 (Overloading) (0) | 2021.09.01 |
[JAVA] 변수와 메서드 (0) | 2021.08.31 |