programing

정적 블록 대 Java의 이니셜 라이저 블록?

nasanasas 2020. 10. 10. 10:10
반응형

정적 블록 대 Java의 이니셜 라이저 블록?


중복 가능성 :
정적 초기화 블록

다음 코드를 고려하십시오 .

public class Test {
    {
        System.out.println("Empty block");
    }
    static {
        System.out.println("Static block");
    }
    public static void main(String[] args) {
        Test t = new Test();
    }
}

먼저 정적 블록이 실행 된 다음 블록 이 실행 된다는 것을 이해합니다 . 그러나 문제는 블록 의 실제 유용성을 결코 이해할 수 없다는 것 입니다. 누구든지 실제 예를 보여줄 수 있습니까?

  • 정적 블록 블록이 모두 사용됩니다.
  • 모두 정적 블록은 다른 유틸리티가

두 가지 매우 다른 목적을위한 것입니다.

  • 정적 이니셜 라이저 블록은 클래스로드시 호출되며 인스턴스 변수 나 메서드에 액세스 할 수 없습니다. @Prahalad Deshpande의 의견에 따라 정적 변수를 만드는 데 자주 사용됩니다.
  • 반면에 비 정적 이니셜 라이저 블록은 객체 생성에서만 생성되며 인스턴스 변수 및 메서드에 액세스 할 수 있으며 @EJP에서 제안한 중요한 수정 사항에 따라 생성자의 시작 부분에서 호출됩니다. 슈퍼 생성자가 (명시 적으로 또는 암시 적으로) 다른 후속 생성자 코드가 호출 되기 전에 호출되었습니다. 클래스에 여러 생성자가 있고 모든 생성자에 대해 호출되는 동일한 초기화 코드가 필요할 때 사용하는 것을 보았습니다. 생성자와 마찬가지로이 블록에서 최종이 아닌 메서드를 호출하지 않아야합니다.

이 질문은 stackoverflow에서 여러 번 답변되었으며 유사한 질문과 답변을 검색하고 검토하는 것이 좋습니다. 예 : 정적 초기화 블록


정적 블록은 클래스가로드 될 때마다 실행됩니다. 빈 블록은 클래스를 인스턴스화 할 때마다 실행됩니다. 다음을 비교해보십시오.

1.

public static void main(String[] args) {
    Test t = new Test();
}

2.

public static void main(String[] args) {

}

출력 :

1.

정적 블록
빈 블록

2.

정적 블록

Layman 단어에서 정적 블록은 생성하는 해당 유형의 객체 수에 관계없이 한 번만 호출 됩니다.

참고 URL : https://stackoverflow.com/questions/12550135/static-block-vs-initializer-block-in-java

반응형