1. 변수의 초기화: 변수를 선언하고 처음으로 값을 저장하는 것으로 경우에 따라 필수적이기도하고 선택적이기도함(초기화 권장)
2. 지역변수(lv)초기화: 수동 초기화 필수
3. 멤버 변수(cv, iv) 초기화
1) 초기화 순서
a. 클래스 변수(cv) 초기화 -> 인스턴스 변수(iv) 초기화
b. 자동 초기화 -> 명시적 초기화 -> 초기화 블럭, 생성자
2) 초기화 시점
a. 클래스 변수(cv) 초기화: 클래스가 처음 로딩될 때 단 한번 초기화
b. 인스턴스 변수(iv) 초기화: 인스턴스가 생성될 때 마다 초기화
3) 초기화 방법
a. 자동 초기화: 자동적으로 변수의 자료형에 맞는 기본값으로 초기화 됨
자료형 | 기본값 |
boolean | false |
char | '\u0000' |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
참조형 | null |
b. 명시적 초기화(explicit initialization): 변수 선언과 동시에 대입 연산자(=)를 사용하여 간단한 초기화
class Car {
int door = 4; // 기본형 변수의 초기화
Engine e = new Engine(); // 참조형 변수의 초기화, 객체를 넣는 것이 초기화
}
c. 초기화 블럭(initialization block): 블럭'{}'을 사용하여 복잡한 초기화(ex. 여러 문장 넣기)
클래스 초기화 블럭 | 인스턴스 초기화 블럭 |
{} | static{} |
클래스 변수의 복잡한 초기화에 사용 | 인스턴스 변수의 복잡한 초기화에 사용 |
d. 생성자(constructor): 인스턴스 변수(iv) 초기화, 복잡한 초기화
4) 예제
class Init {
static int cv = 1; // 클래스 변수(cv) 명시적 초기화
int iv = 1; // 인스턴스 변수(iv) 명시적 초기화
// 클래스 초기화 블럭
static {
cv = 2;
}
// 인스턴스 초기화 블럭
{
iv = 2;
}
// 생성자
Init() {
iv = 3;
}
}
진행 순서 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
변수 | 클래스 변수 | 인스턴스 변수 | |||||
초기화 방법 | 자동 초기화 | 명시적 초기화 | 클래스 초기화 블럭 | 자동 초기화 | 명시적 초기화 | 인스턴스 초기화 블럭 | 생성자 |
값 변화 | cv = 0 | cv = 1 | cv = 2 | iv = 0 | iv = 1 | iv = 2 | iv = 3 |
'Java' 카테고리의 다른 글
Java 모든 클래스의 조상 Object 클래스 (0) | 2022.12.24 |
---|---|
Java 클래스간의 관계 - 상속(Inheritance), 포함(Composite) 관계 (0) | 2022.10.10 |
Java 생성자 간 호출 this()와 객체 자신을 가리키는 참조변수 this (0) | 2022.10.09 |
Java 생성자(constructor) (0) | 2022.10.09 |
Java 메서드 오버로딩(method overloading) (0) | 2022.10.09 |