static 초기화 블록

조회수 2334회

지금까지 “static 초기화 블록”이 static 필드의 값을 설정하는데 한 줄로는 불가능할 때 사용된다고 알고 있었습니다.

그런데 왜 굳이 그 작업을 위해서 특별한 블록이 필요한지 모르겠습니다. 예를 들어 필드를 static으로 정의했습니다(값을 할당하지는 않고요). 그리고 위의 static 필드에 값을 생성하고 할당하는 여러 줄의 코드를 작성합니다.

왜 그런 코드들이 static {…}과 같은 특별한 블록 안에 있어야 하는것이죠?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    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
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)