Java에서 정적 및 인스턴스 초기화 블록은 어떻게 주문됩니까?
Java의 정적 및 인스턴스 초기화 블록 초기화 순서
Java는 정적 및 인스턴스 초기화 블록을 특정 순서로 초기화하여 올바른 로딩을 보장합니다. 그리고 수업의 실행. 이 순서는 종속성과 리소스 할당을 관리하는 데 중요합니다.
정적 초기화
Java는 해당 클래스 또는 해당 클래스의 정적 멤버가 있는 경우에만 클래스에 대한 정적 초기화 블록을 초기화합니다. 처음으로 사용됩니다. 다음은 정적 블록의 초기화를 트리거합니다.
- 클래스 인스턴스화
- 클래스의 정적 메서드 호출
- 정적 필드에 값 할당
- 상수가 아닌 정적 필드 사용
- assert 문 실행 최상위 클래스
인스턴스 초기화
반면에 인스턴스 초기화 블록은 클래스 생성자 직전에 실행됩니다. 실행 순서는 클래스 정의 내에서 이러한 블록의 모양에 따라 결정됩니다.
예
다음 코드 조각을 고려하세요.
class Parent { // Static initializer static { System.out.println("static - parent"); } // Instance initializer { System.out.println("instance - parent"); } // Constructor public Parent() { System.out.println("constructor - parent"); } } class Child extends Parent { // Static initializer static { System.out.println("static - child"); } // Instance initializer { System.out.println("instance - child"); } // Constructor public Child() { System.out.println("constructor - child"); } }
Child 클래스가 인스턴스화되면 다음 출력은 다음과 같습니다. 생성:
static - parent static - child instance - parent constructor - parent instance - child constructor - child
이는 상위 클래스(이 경우 Parent)의 정적 초기화가 하위 클래스(Child)보다 먼저 실행됨을 보여줍니다. 각 클래스 내에서 인스턴스 초기화 블록은 생성자보다 먼저 실행됩니다.
사용하지 않는 클래스에 대한 예외
Java에서는 사용되지 않는 클래스는 로드되거나 초기화되지 않습니다. 이는 정적 및 인스턴스 초기화 블록 모두에 적용됩니다. 제공된 예제 코드에서 참조되지 않은 새 클래스(IAmAClassThatIsNeverUsed)를 추가해도 다른 클래스의 초기화 순서에는 영향을 미치지 않습니다.
위 내용은 Java에서 정적 및 인스턴스 초기화 블록은 어떻게 주문됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











2025 년 상위 4 개의 JavaScript 프레임 워크 : React, Angular, Vue, Svelte

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?

Spring Boot Snakeyaml 2.0 CVE-2022-1471 문제 고정

캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?

고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?
