ホームページ >Java >&#&ベース >静的コード ブロック、構築コード ブロック、構築メソッドの実行順序は何ですか?

静的コード ブロック、構築コード ブロック、構築メソッドの実行順序は何ですか?

青灯夜游
青灯夜游オリジナル
2022-01-25 11:41:1715079ブラウズ

実行順序は、最初に「静的コード ブロック」を実行し、次に「構築されたコード ブロック」を実行し、最後に「構築されたコード ブロック」を実行します。静的コード ブロックはクラス レベルにあり、構造的コード ブロックと構築メソッドはインスタンス レベルであるため、静的コード ブロックが最初に実行されます。また、構造的コード ブロックは独立しており、実行するにはキャリアに依存する必要があるため、構造的コード ブロックはコード ブロックはメソッドの前に構造体に配置する必要があります。

静的コード ブロック、構築コード ブロック、構築メソッドの実行順序は何ですか?

#このチュートリアルの動作環境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。

構築コード ブロック、静的コード ブロック、構築メソッドはクラス内の 3 つの異なるコード ブロックですが、それらの違いは何ですか?

1. 3 種類のコード ブロックの紹介

静的コード ブロック: staitc で宣言され、jvm がクラスをロードするときに実行され、一度だけ実行されます

構築されたコード ブロック: 直接クラス {} 定義で使用され、オブジェクトが作成されるたびに実行されます。

実行順序の優先順位: static ブロック、main()、構築ブロック、構築メソッド。

class A
{
    //构造代码块
    {
        System.out.println("构造代码块A");
    }
    //静态代码块
    static
    {
        System.out.println("静态代码块A");
    }
    //构造方法
    public A()
    {
        System.out.println("构造方法A");
    }
}

2番目と3番目の実行順序

3者の実行順序を明確にするために、クラスAをインスタンス化し、単一インスタンスと複数インスタンスをそれぞれテストします。

2.1 単一インスタンス

class Demo
{
    public static void main(String[] args)
    {
        new A();
    }
}

2.2 複数のインスタンス

class Demo
{
    public static void main(String[] args)
    {
        new A();
        new A();
        new A();
    }
}

# # 3. 継承システムの順序

class B extends A
{
    //构造代码块
    {
        System.out.println("构造代码块B");
    }
    //静态代码块
    static
    {
        System.out.println("静态代码块B");
    }
    //构造方法
    public B()
    {
        System.out.println("构造方法B");
    }
}

class Demo
{
    public static void main(String[] args)
    {
        new B();
    }
}

4. まとめ

1. オブジェクトの作成プロセスにおいて、3 つの実行順序は次のとおりです。 : 静的コード ブロック --> 構築コード ブロック --> 構築方法;

1. 静的コード ブロック: クラス ロード プロセスの初期化の 3 番目のステップで実行されます。目的は、クラス変数に初期値を割り当てることです。
2. 構築コード ブロック: 独立しており、実行するにはキャリアに接続する必要があります。Java は、いくつかの共通インスタンス変数をインスタンス化し、コードの量を減らすために、各構築メソッドの前に構築コード ブロックを配置します。

3.構築メソッド: 変数をインスタンス化するために使用されます。

1 はクラス レベル、2 と 3 はインスタンス レベルであるため、当然のことながら 1 は 23 よりも優先されます。

1 つ理解しましょう。サブクラスのアクティブな使用は、その親クラスのアクティブな使用につながります。そのため、サブクラスはインスタンス化されますが、親クラスの初期化とインスタンス化も行われます。サブクラスで実行するのが最適です。

2. オブジェクトが作成されるたびに、構築コード ブロックと構築メソッドが 1 回実行されます。作成されるオブジェクトの数に関係なく、静的コード ブロックは最初の作成時に 1 回だけ実行されます。オブジェクトが作成される;
3. サブクラス オブジェクトを作成するとき、サブクラスの静的コード ブロックは親クラスの静的コード ブロックの後に実行されますが、親クラスの構築コード ブロックおよび構築メソッドよりも優先されます。

4. サブクラス オブジェクトを作成する場合、親クラスの構築メソッドの後にサブクラスの構築コード ブロックが実行されます。

推奨される関連ビデオ チュートリアル:

Java ビデオ チュートリアル

以上が静的コード ブロック、構築コード ブロック、構築メソッドの実行順序は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。