본문 바로가기
수업(국비지원)/Java

[Java] chap6: 클래스와 객체 - 초기화 블럭

by byeolsub 2023. 4. 15.
  • 초기화 블럭
초기화 블럭
   static 초기화 블럭
    - 클래스 변수의 초기화
    - 클래스 정보가 로드될때 한번 실행
      
인스턴스 초기화 블럭
    - 인스턴스 변수의 초기화. 생성자와 기능이 겹치기 때문에 잘 사용되지는 않음
    - 객체 생성시 생성자 호출 전에 먼저 호출 됨.  

 

📌

package chap6;

//호출되는 순서 자세히 보기
public class InitEx1 {
	static int cv; // 클래스 변수
	int iv;        // 인스턴스 변수
	InitEx1(){ // 생산자(클래스 이름과 동일)
		System.out.println("5. 생성자 호출됨");
	}
	static { //static 초기화 블럭 <- 메인보다도 먼저 실행됨
		cv = (int)(Math.random() * 100); // 클래스 변수
		System.out.println("1. 클래스 초기화 블럭 cv="+cv);
	}
	{ // 인스턴스 초기화 블럭 <- 거의 쓰지 않는다. 생성자와 비슷해서.
		iv = (int)(Math.random() * 100);
		System.out.println("4. 인스턴스 초기화 블럭 iv="+iv);
	}
	public static void main(String[] args) {
		System.out.println("2. main메서드 시작");
		System.out.println("3. main메서드 ie1 객체 생성");
		InitEx1 ie1 =  new InitEx1();
		System.out.println("3. main메서드 ie2 객체 생성");
		InitEx1 ie2 = new InitEx1();
		System.out.println("6.main메서드 종료");
	}
}