> Java > java지도 시간 > Java에서 정적 및 인스턴스 초기화 블록의 실행 순서는 무엇입니까?

Java에서 정적 및 인스턴스 초기화 블록의 실행 순서는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-24 08:28:09
원래의
901명이 탐색했습니다.

What's the Execution Order of Static and Instance Initializer Blocks in Java?

Java에서 정적 및 인스턴스 초기화 블록의 실행 순서

Java 클래스로 작업할 때 정적 및 인스턴스 초기화 블록의 실행 순서를 이해하는 것이 중요합니다. 인스턴스 초기화 블록이 실행됩니다. 이러한 블록은 초기 값 할당, 클래스 및 객체 멤버 초기화와 같은 중요한 작업을 수행합니다.

인스턴스 초기화 블록

중괄호 { }로 묶인 인스턴스 초기화 블록이 실행됩니다. 클래스의 인스턴스가 생성될 때마다. 클래스 내의 코드에 나타나는 순서대로 실행됩니다. 이 동작은 모든 클래스에서 일관됩니다.

정적 초기화 블록

중괄호 { }로 묶이고 앞에 static 키워드가 오는 정적 초기화 블록은 다음과 같은 경우에 실행됩니다. 클래스가 로드되었습니다. 특정 인스턴스와 연결되지 않으며 생성된 인스턴스 수에 관계없이 한 번만 실행됩니다.

특정 실행 순서

JLS(Java 언어 사양) 정적 초기화 블록 실행을 위한 특정 순서를 정의합니다.

  1. 상위 클래스의 정적 초기화 블록이 실행됩니다. 먼저.
  2. 직접 하위 클래스의 정적 초기화 블록이 다음에 실행됩니다.
  3. 이 순서는 모든 하위 클래스가 정적 초기화 블록이 실행될 때까지 반복적으로 따릅니다.

다음 코드를 생각해 보세요. 예:

class Grandparent {
    static { System.out.println("Static - Grandparent"); }
}

class Parent extends Grandparent {
    static { System.out.println("Static - Parent"); }
}

class Child extends Parent {
    static { System.out.println("Static - Child"); }
}
로그인 후 복사

main 메서드가 실행되면 다음 출력이 생성됩니다.

Static - Grandparent
Static - Parent
Static - Child
로그인 후 복사

이는 정적 초기화 블록이 parent -> 순서로 실행됨을 보여줍니다. 하위 클래스.

예외

이 규칙에는 한 가지 주목할만한 예외가 있습니다. 상위 클래스가 참조되지 않는 클래스를 정의하는 경우 해당 정적 초기화 블록은 실행되지 않습니다. 클래스 로더는 명시적으로 필요한 클래스만 초기화하기 때문입니다.

위 내용은 Java에서 정적 및 인스턴스 초기화 블록의 실행 순서는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿