자바
멤버변수의 초기화와 시점
Kiwisae
2022. 7. 16. 15:11
멤버 변수의 초기화의 종류
1. 자동 초기화
2. 간단 초기화
1) 명시적 초기화 : 대입 연산자 '='를 사용
3. 복잡 초기화
1) 초기화 블록 { }
2) 초기화 블록 static {} cv
3) 생성자 iv
지역변수 lv는 반드시 수동 초기화 해야 함
멤버변수 iv, cv는 자동 초기화된다.
class InitTest {
int x;
int y = x; //정상. iv는 자동 초기화가 된다.
void method1() {
int i;
int j=i; //에러. 지역변수를 초기화하지 않고 선언만 했음
}
}
이 자동 초기화의 값은 자료형마다 각자 다르다.
0, false, null.. 타입에 따라 다양하지만 숫자형 타입은 주로 0 또는 0.0이고 불린형은 false, 문자형은 null
멤버변수 iv, cv의 초기화
1. 명시적 초기화 : 대입연산자 = 를 이용하여 선언시 초기화
class Car {
int door = 4; //기본형 변수 초기화
Engine e = new Engine(); //참조형 변수 초기화
}
참조형 변수가 가질 수 있는 값은 객체 주소
2. 초기화 블록 : 복잡한 초기화에 사용
1) 인스턴스 초기화 블록 : { } - 알아만 둘 것
2) 클래스 초기화 블록 : static {}
3. 생성자 : iv 초기화, 복잡한 초기화에 사용
class StaticBlockTest {
static in[] arr = new int[10]; // 명시적 초기화
static { // 클래스 초기화 블록
for (int i=0; i<arr.length; i++) {
arr[i] = (int)(Math.random()*10)+1; }}}
멤버변수 초기화의 시점
클래스 변수 클래스가 처음 로딩될 때 단 한번.
인스턴스 변수 인스턴스(객체)가 생성될 때 마다
클래스 초기화 cv
1) 기본값 2)명시적 초기화 3)클래스 초기화블록
인스턴스 초기화 iv
1) 기본값 2)명시적 초기화 3)인스턴스초기화블록 4)생성자
자동 간단 복잡