JAVA
TIL (4) 클래스 생성 시 실행 순서(초기화 블럭, Static블럭, 생성자)
나죽나강
2021. 5. 26. 14:00
# 클래스 생성 시 실행 순서
1. 변수 선언 할당
2. 초기화 블럭
3. 생성자 블럭
4. Static 블럭
# 목적
초기화 블럭, 생성자 블럭, Static블럭이 작성 순서에 상관없이 어떤 순서로 호출되는지 확인하고자 한다.
package Feedback;
public class num {
int x;
static float PI;
//기본 생성자
public num() {
System.out.println("생성자 호출");
}
// 매개변수 생성자
public num(int a) {
System.out.println("매개변수 생성자 호출");
}
// 초기화 블럭
{
System.out.println("초기화 블럭 호출");
}
// Static 블럭
static {
PI = 3.14f;
System.out.println("STATIC 블럭 호출");
//System.out.println(PI);
}
}
package Feedback;
public class numTest {
public static void main(String[] args) {
num s = new num();
System.out.println();
num a = new num(5);
}
}
# 실행 순서
Static 블럭 > 초기화 블럭 > 생성자 호출
# 정리
> 객체는 여러 개를 생성하지만, Static 블럭은 한번만 호출된다.
> Static 블럭은 여러개 생성하면, 순서대로 호출된다.
> 생성자가 호출되기 전에 Static 블록들이 호출되기 때문에, 클래스를 초기화할 때 꼭 수행되어야 하는 작업이 있을때 유용하게 사용된다.
> 변수 선언에 따른 차이는 '자바의 신' P.208 참조