도찐개찐
[JAVA] 초기화 블럭(initialization block) 본문
초기화가 복잡하다보면 초기화블럭을 통해 코드를 단순하게 짤 수 있는 장점이 있습니다.
초기화블럭은 클래스초기화블럭, 인스턴스초기화블럭 두 개가 있는데요, 차근차근 알아보겠습니다.
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