Java 객체는 초기화 중에 자체 생성 메서드를 호출할 뿐만 아니라 정적 문 블록, 인스턴스 문 블록, 정적 변수 초기화, 멤버 변수 초기화와 같은 실행 문제도 포함합니다. 등. 초기화 순서는 이 다섯 부분의 실행 순서를 나타냅니다.
package com.javase.classtest;public class InitializationSequence {static { System.out.println("静态语句块"); }static MyInnerClass in = new MyInnerClass("静态变量s"); MyInnerClass in01 = new MyInnerClass("a"); { System.out.println("实例语句块"); } MyInnerClass in02 = new MyInnerClass("b");public InitializationSequence() { System.out.println("构造函数"); } @SuppressWarnings("unused")public static void main(String[] args) { InitializationSequence obj01 = new InitializationSequence(); System.out.println("-----------------------------------"); InitializationSequence obj02 = new InitializationSequence(); } }class MyInnerClass {public MyInnerClass(String description) { System.out.println("成员变量初始化::" + description); } }
실행 결과:
분석:
정적 명령문 블록: 클래스가 로드될 때 실행됩니다. JVM 사용으로 인해 JVM 클래스 전제 클래스는 JVM 가상 머신에 로드되므로 정적 문 블록이 먼저 실행되고 클래스는 한 번만 로드되고 정적 문 블록은 한 번만 실행됩니다.
정적 변수 초기화: 정적 변수는 클래스의 모든 인스턴스에서 공유되고 특정 개체에 의존하지 않으므로 개체가 생성될 때 초기화되지 않고 클래스가 로드될 때 초기화됩니다. 정적 문 블록에서 그 후에는 한 번만 수행하십시오.
인스턴스 문 블록: 생성자 메서드 이전에 실행되며 생성자 메서드가 호출될 때마다 한 번씩 실행됩니다. 실행 순서는 정적 변수 초기화 이후이며, 멤버 변수 초기화를 기준으로 하며, 실제 순서는 정의 순서에 따라 달라집니다. 초기화되며, 나중에 정의하면 멤버변수가 초기화된 후에 실행됩니다.
멤버 변수 초기화: 생성자 메서드 이전에 실행되며, 생성자 메서드가 호출될 때마다 한 번씩 실행됩니다. 실행 순서 정적 변수 초기화 후 인스턴스 명령문 블록에 대한 실행 순서는 정의 순서에 따라 달라집니다.
구성 방법: 마지막으로 실행됩니다.
요약하자면 Java 객체 초기화의 실행 순서는 정적문 블록>정적 변수 초기화>인스턴스문 블록/멤버변수 초기화>생성자 메소드, 인스턴스문 블록과 멤버변수 초기화의 상대적 관계입니다. 실행 순서는 정의 순서에 따라 달라집니다.
위 내용은 Java 객체가 초기화되는 순서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!