변수의 초기화
- 변수를 선언하고 처음으로 값을 저장하는 것
- 경우에 따라서 필수적이기도 하고, 선택적이기도 하지만 선언과 동시에 적절한 값으로 초기화 하는 것이 바람직하다.
- 지역변수는 사용하기 전에 반드시 초기화해야 한다.
  class InitTest {
      int x; 
      int y = x; 
      void method() {
          int i;	
          int j = i; 
      }
  }
멤버변수의 초기화
- 지역변수와 달리 멤버변수는 각 타입의 기본값으로 자동 초기화
- 클래스 변수(cv)초기화 → 인스턴스 변수(iv) 초기화
- 자동 초기화 → 명시적 초기화(간단) → 초기화 블럭, 생성자(복잡)
명시적 초기화
  class {
      int door = 4; 
      Engine e = new Engine(); 
      
  }
초기화 블럭
- 클래스 초기화 블럭 : 클래스 변수의 복잡한 초기화에 사용된다.
- 인스턴스 초기화 블럭 : 인스턴스 변수의 복잡한 초기화에 사용된다.
  class Ex {
      static {
          System.out.println("static() { }"); 
      }
      {
          System.out.println("{ }"); 
      }
      public Ex() {
          System.out.println("생성자");
      }
  }
  public class test {
      public static void main(String[] args) {
          System.out.println("Ex bt = new Ex(); ");
          Ex bt = new Ex();
          System.out.println("Ex bt = new Ex(); ");
          Ex bt2 = new Ex();
      }
  }
cosole
Ex bt = new Ex(); 
static() { }
{ }
생성자
Ex bt = new Ex(); 
{ }
생성자
- 클래스 초기화 블럭은 처음 메모리에 로딩 될 때 한 번만 수행.
- 인스턴스 초기화 블럭은 인스턴스가 생성될 때마다 수행.
References
