변수의 초기화

1438 단어 JavaJava

변수의 초기화

class InitTest {
	int x; // iv
	int y = x; // iv

	void method1() {
		int i;
		int j = i; // ERROR:lv를 초기화하지 않고 사용
	}
}
  • 지역 변수는 수동 초기화 해야한다.
  • 멤버 변수(iv, cv)는 자동 초기화 된다.

지역 변수는 메서드가 호출되어 작업하는 동안만 존재하기 때문에 생명주기가 짧다.
메서드는 빨리 실행하고 제거해야 하기 때문에 지역 변수를 항상 0으로 초기화하면 성능이 떨어진다.

멤버 변수는 자동 초기화 안하면 사용자가 초기화 해야 할 것이 많아지기 때문이다.

멤버 변수의 초기화

  1. 명시적 초기화 (=)
int door = 4; // primitive type 변수의 초기화
Engine e = new Engine(); // reference type 변수의 초기화
  1. 초기화 블럭
  • 인스턴스 초기화 블럭 : { }, iv
  • 클래스 초기화 블럭 : static { }, cv
  1. 생성자
    iv 초기화
class StaticBlockTest {
	static int[] arr = new int[10]; // 명시적 초기화

	static {
		for (int i = 0; i < arr.length; i++) { // 복잡 초기화
			arr[i] = (int) (Math.random() * 10) + 1;
		}
	}
}
class InitTest {
	// 간단 초기화
	// 명시적 초기화
	static int cv = 1;
    int iv = 1;
    
    // 복잡 초기화
    static { cv = 2; } // 클래스 초기화 블럭
    { iv = 2; } // 인스턴스 초기화 블럭
    
    InitTest() { // 생성자
    	iv = 3;
    }
}
  • 클래스 변수 초기화 시점 : 클래스가 처음 메모리에 로딩될 때 단 한번
  • 인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때마다

결론

  1. CV → IV 순으로 초기화
  2. 자동 → 간단 → 복잡 초기화

좋은 웹페이지 즐겨찾기