>  기사  >  Java  >  Java 객체가 초기화되는 순서

Java 객체가 초기화되는 순서

巴扎黑
巴扎黑원래의
2017-07-23 13:46:401586검색

1. 초기화에 관련된 여러 부분

Java 객체는 초기화 중에 자체 생성 메서드를 호출할 뿐만 아니라 정적 문 블록, 인스턴스 문 블록, 정적 변수 초기화, 멤버 변수 초기화와 같은 실행 문제도 포함합니다. 등. 초기화 순서는 이 다섯 부분의 실행 순서를 나타냅니다.

2.Demo

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);
    }
}

실행 결과:

분석:

  1. 정적 명령문 블록: 클래스가 로드될 때 실행됩니다. JVM 사용으로 인해 JVM 클래스 전제 클래스는 JVM 가상 머신에 로드되므로 정적 문 블록이 먼저 실행되고 클래스는 한 번만 로드되고 정적 문 블록은 한 번만 실행됩니다.

  2. 정적 변수 초기화: 정적 변수는 클래스의 모든 인스턴스에서 공유되고 특정 개체에 의존하지 않으므로 개체가 생성될 때 초기화되지 않고 클래스가 로드될 때 초기화됩니다. 정적 문 블록에서 그 후에는 한 번만 수행하십시오.

  3. 인스턴스 문 블록: 생성자 메서드 이전에 실행되며 생성자 메서드가 호출될 때마다 한 번씩 실행됩니다. 실행 순서는 정적 변수 초기화 이후이며, 멤버 변수 초기화를 기준으로 하며, 실제 순서는 정의 순서에 따라 달라집니다. 초기화되며, 나중에 정의하면 멤버변수가 초기화된 후에 실행됩니다.

  4. 멤버 변수 초기화: 생성자 메서드 이전에 실행되며, 생성자 메서드가 호출될 때마다 한 번씩 실행됩니다. 실행 순서 정적 변수 초기화 후 인스턴스 명령문 블록에 대한 실행 순서는 정의 순서에 따라 달라집니다.

  5. 구성 방법: 마지막으로 실행됩니다.

요약하자면 Java 객체 초기화의 실행 순서는 정적문 블록>정적 변수 초기화>인스턴스문 블록/멤버변수 초기화>생성자 메소드, 인스턴스문 블록과 멤버변수 초기화의 상대적 관계입니다. 실행 순서는 정의 순서에 따라 달라집니다.

위 내용은 Java 객체가 초기화되는 순서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.