티스토리 뷰
# 클래스 생성 시 실행 순서
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 참조
'JAVA' 카테고리의 다른 글
TIL(8) 객체 - 앨런케이의 정의(2) (0) | 2021.05.27 |
---|---|
TIL(7) 객체 - 앨런케이의 정의(1) (0) | 2021.05.26 |
TIL (6) UML 다이어그램 (0) | 2021.05.26 |
TIL (5) 클래스, 객체, 인스턴스 (0) | 2021.05.26 |
TIL (1) 객체지향프로그래밍(OOP) (0) | 2021.05.26 |
댓글