자바

멤버변수의 초기화와 시점

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)생성자


자동 간단 복잡