도찐개찐

[JAVA] 초기화 블럭(initialization block) 본문

JAVA

[JAVA] 초기화 블럭(initialization block)

도개진 2022. 7. 6. 15:01

초기화가 복잡하다보면 초기화블럭을 통해 코드를 단순하게 짤 수 있는 장점이 있습니다.

초기화블럭은 클래스초기화블럭, 인스턴스초기화블럭 두 개가 있는데요, 차근차근 알아보겠습니다.

 

1. 클래스 초기화 블럭

 클래스 초기화 블럭은 처음에 한 번만 실행되며, 일반 인스턴스 블럭에 static만 붙여주면 클래스 초기화 블럭이 완성됩니다.

 

2. 인스턴스 초기화 블럭

 인스턴스 초기화블럭은 인스턴스를 생성할 때마다 수행되며, 블럭 내에 수행문장을 적어주면 블럭은 완성됩니다.

 

public class Test {
	int test1;
	String test2;
	
	static {
		System.out.println("static 클래스");
	}
	
	{
		System.out.println("인스턴스 테스트");
	}
	
	Test() {
		System.out.println("인스턴스 초기화 블럭 테스트");
	}
	
	Test(int test1, String test2) {

		System.out.println("인스턴스 초기화 블럭 테스트 2");
	}
	
	public static void main(String[] args) {
		Test t = new Test();
		Test t2 = new Test(1, "AA");
				
	}
}




코드의 순서대로 클래스 초기화블럭, 인스턴스 초기화블럭, 인자가 없는 인스턴스 생성자, 인자가 있는 인스턴스 생성자가 있습니다.

각각 생성자마다 공통적으로 test1 = 5 와 test2 = "test" 가 코드에 있어서 중복된 코드를 해결하고자 인스턴스 초기화 블럭을 사용하였습니다.

// 실행 결과
static 클래스
인스턴스 테스트
인스턴스 초기화 블럭 테스트
인스턴스 테스트
인스턴스 초기화 블럭 테스트 2

처음에 한번만 실행되는 static클래스로 시작해서, 객체 생성시 안에 println 메소드와 인스턴스 초기화 블럭을 통해 출력된 println 메소드도 확인할 수 있습니다.

728x90

'JAVA' 카테고리의 다른 글

[JAVA] 클래스 형변환  (0) 2022.07.07
[JAVA] 상속(Inheritance)  (0) 2022.07.06
[JAVA] 클래스변수, 인스턴스변수, 지역변수  (0) 2022.07.06
[JAVA] static, final, static final  (0) 2022.07.06
[JAVA] 생성자(Constructor)  (0) 2022.07.06
Comments