1. 변수의 초기화
- 지역변수는 사용전 수동 초기화 해야 함
- 지역변수는 메서드 호출 작업 동안만 존재하여 계속 0으로 초기화 하면 성능이 떨어짐
- 인스턴스 변수, 클래스 변수는 자동 초기화됨
- 객체에 여러 변수가 있는데 모두 수동 초기화하기에는 너무 많아 자동초기화 해줌 ex) VO
- 타입별 자동초기화 값
타입 | 기본값 |
---|
boolean | false |
char | '\u0000' |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
참조형 변수 | null |
2. 명시적 초기화(explicit initialization)
class Junseung {
int age = 28;
Career c = new Career();
}
3. 초기화 블럭(initialization block)
- 인스턴스 초기화 블럭 : {}, 인스턴스 변수의 초기화에 사용
- 클래스 초기화 블럭 : static {}, 클래스 변수의 초기화에 사용
class Junseung {
int age;
String name;
static int birthday;
{
age = 28;
name = "이준승";
}
static {
birthday = 19951207
}
}
4. 멤버변수의 초기화 시기와 순서
- 클래스 변수 초기화 시점 : 클래스가 처음 로딩될 때 단 한번, 클래스가 메모리에 올라갈 때 초기화
- 인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때 마다
- 초기화 순서
- 클래스 초기화 - > 인스턴스 초기화
- 자동 -> 자동(명시적) -> 복잡(초기화블럭, 생성자)