static 초기화 블록
조회수 2334회
지금까지 “static 초기화 블록”이 static 필드의 값을 설정하는데 한 줄로는 불가능할 때 사용된다고 알고 있었습니다.
그런데 왜 굳이 그 작업을 위해서 특별한 블록이 필요한지 모르겠습니다. 예를 들어 필드를 static으로 정의했습니다(값을 할당하지는 않고요). 그리고 위의 static 필드에 값을 생성하고 할당하는 여러 줄의 코드를 작성합니다.
왜 그런 코드들이 static {…}과 같은 특별한 블록 안에 있어야 하는것이죠?
1 답변
-
non-static 블록입니다:
{ // Do Something... }
이 블록은 클래스의 인스턴스가 생성될 때마다 매번 호출될 것입니다. static block은 해당 클래스 타입의 오브젝트를 몇 개를 생성하느냐와 상관없이 클래스 자체가 초기화될 때 한번 호출될 것입니다.
예시:
public class Test { static{ System.out.println("Static"); } { System.out.println("Non-static block"); } public static void main(String[] args) { Test t = new Test(); Test t2 = new Test(); } }
다음과 같이 출력됩니다:
Static Non-static block Non-static block
댓글 입력