Java

54. 변수의 초기화, 멤버변수의 초기화 - 패스트캠퍼스 백엔드 부트캠프 3기

gkss2tpt 2024. 12. 20. 16:52

1. 변수의 초기화

  • 지역변수(lv)는 수동 초기화 해야 함
  • 멤버변수(iv, cv)는 자동 초기화된다.
class InitTest {
    int x;			// 인스턴스 변수
    int y = x;			// 인스턴스 변수
    
    void method1() {
    	int i;			// 지역변수
        int j = i;		// 에러 지역변수를 초기화하지 않고 사용
    }
}

 

2. 멤버변수의 초기화

  • 명시적 초기화(간단한 초기화) : =
class Car {
    int door = 4;		// 기본형(primitive type) 변수의 초기화
    Engine e = new Engine();	// 참조형(reference type) 변수의 초기화
}
  • 초기화 블럭(복잡한 초기화)
    • 인스턴스 초기화 블럭 : {}
    • 클래스 초기화 블럭 : static {}
class StaticBlockTest {
    static int[] arr = new int[10];	// 명시적 초기화
    
    static {	// 클래스 초기화 블럭 - 배열 arr을 난수로 채운다.
    	for(int i = 0; i < arr.length; i++) {
        	arr[i] = (int)(Math.random()*10) + 1;
        }
    }
}
  • 생성자(복잡한 초기화)

3. 멤버변수의 초기화 시점

  • 클래스 변수 초기화 시점 : 클래스가 처음 로딩될 때 단 한번
  • 인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때마다
class InitTest { // cv -> iv, 자동 -> 간단 -> 복잡
    static int cv = 1;	// 명시적 초기화 (간단 초기화)(1)
    int iv = 1;		// 명시적 초기화 (간단 초기화)(3)
    
    static { cv = 2; }	// 클래스 초기화 블럭 (복잡 초기화)(2)
    { iv = 2; }		// 인스턴스 초기화 블럭 (복잡 초기화)(4)
    
    InitTest() {	// 생성자 (복잡 초기화)(5)
    	iv = 3;
    }
}