자바의 정석 - 변수의초기화, 멤버변수의 초기화

Yohan·2024년 1월 14일
0

변수의 초기화

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

멤버변수(iv, cv)의 초기화

  • 명시적 초기화 (=) -> 간단 초기화
class Car {
	int door = 4;				// 기본형 변수의 초기화
    Engine e = new Engine();	// 참조형 변수의 초기화
}
  • 초기화 블럭 -> 복잡한 초기화

    • 인스턴스(iv) 초기화 블럭 : { }
    • 클래스(cv) 초기화 블럭 : static { }
  • 생성자

Car(String color, String gearType, int door) { // 매개변수 있는 생성자
	this.color = color;
    this.gearType = gearType;
    this.door = door;
}

멤버변수(iv, cv)의 초기화 - static { }

  1. 명시적 초기화(=) -> 간단 초기화
  2. 초기화 블럭 - { } (iv인데 잘 안씀) , static{ } (cv) -> 복잡 초기화
  3. 생성자 (iv 초기화) -> 복잡 초기화
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;
    }
  }
}

멤버변수의 초기화

  • 클래스 변수 초기화 시점 : 클래스가 처음 로딩될 때 단 한 번
  • 인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때 마다
  • cv -> iv 순서로 초기화 (cv는 한 번만)
  • 자동 - 간단 - 복잡 순서로 초기화
profile
백엔드 개발자

0개의 댓글