Javaクラスのロード接続と初期化インスタンス分析

1967 ワード

この例では、Javaクラスのロード接続と初期化について説明します.皆さんの参考にしてください.具体的には以下の通りです.
ほんの少し
1クラスのロード
プログラムがアクティブにクラスを使用する場合、クラスがメモリにロードされていない場合、システムはロード、接続、初期化の3つのステップでクラスを初期化します.予期せぬことがなければ、JVMはこの3つのステップを連続的に完了するので、これらの3つのステップを総称してクラスロードまたはクラス初期化と呼ぶこともあります.
クラスロードとは、クラスのclassファイルをメモリに読み込み、java.lang.Classオブジェクトを作成することです.つまり、プログラムがクラスを使用すると、java.lang.Classオブジェクトが作成されます.
2クラスデータのソース
異なるクラス・ローダを使用すると、クラスのバイナリ・データを異なるソースからロードできます.通常、次のようなソースがあります.
ローカルファイルシステムからclassファイルをロードします.これはほとんどの分類ロード方式です.
JARパッケージからclassファイルをロードするのもよくありますが、ODBCプログラミングで使用されるデータベースドライバクラスはJARファイルに配置され、JVMはJARファイルから直接このclassファイルをロードすることができます.
ネットワークを介してclassファイルをロードします.
Javaソースファイルを動的にコンパイルし、ロードします.
3クラスの接続
クラスがロードされると、システムは対応するClassオブジェクトを生成し、接続フェーズに入り、接続フェーズはクラスのバイナリデータをJREにマージする責任を負います.クラス接続は、次の3つの段階に分けられます.
  • 検証:検証フェーズは、ロードされたクラスに正しい内部構造があるかどうかを検証し、他のクラスと協調している.
  • 準備:クラス準備フェーズでは、クラスの静的属性にメモリを割り当て、デフォルトの初期値を設定します.
  • 解析:クラスのバイナリデータのシンボル参照を直接参照に置き換えます.

  • 4クラスの初期化
    クラスの初期化フェーズでは、仮想マシンがクラスを初期化し、主に静的プロパティを初期化します.Javaクラスで静的プロパティの初期値を指定するには、次の2つの方法があります.
    静的プロパティを宣言するときに初期値を指定します.
    静的初期化ブロックを使用して、静的プロパティの初期値を指定します.
    5 JVMクラスを初期化するには
    5.1このクラスがまだロードされていない場合、プログラムは先にクラスをロードして接続します.
    5.2クラスの直接親がまだ初期化されていない場合は、その直接親を初期化します.
    5.3クラスに初期化文がある場合、システムはこれらの初期化文を順次実行する.
    二実戦
    1コード
    
    public class Test
    {
      static
      {
       //            b      
       b = 6;
       System.out.println("----------");
      }
      //     a      
      static int a = 5;
      static int b = 9;     // ①
      static int c;
      public static void main(String[] args)
      {
       System.out.println(Test.b);
      }
    }
    
    

    2運転
    ---------- 9
    Javaに関する詳細に興味のある読者は、「Javaオブジェクト向けプログラム設計入門と進級チュートリアル」、「Javaデータ構造とアルゴリズムチュートリアル」、「Java操作DOMノードテクニックまとめ」、「Javaファイルとディレクトリ操作テクニックまとめ」、「Javaキャッシュ操作テクニックまとめ」のトピックを参照してください.
    本文で述べたjavaプログラム設計に役立つことを願っています.