すべてのJava仮想マシンは、彼らが初期化時に各クラスまたはインタフェースの「最初の積極的な活用」を実現するためのJavaプログラムでなければなりません

オリジナル:https://www.cnblogs.com/fanjie/p/6916784.html

2つのクラスに分類されるJavaプログラムを使用してください
- 積極的な活用
- パッシブ使用

受動的な使用リピートした後、ここでは積極的に例のJavaクラスの6で使用されるイニシアチブの使用、何であるかについて話をします

図1に示すように、クラスのインスタンスを作成します

2、クラスまたはインタフェースをご覧静的変数、または静的変数の割り当てを

3、静的メソッド呼び出しクラス

図4に示すように、反射型(例えばClass.forNameの( "com.shengsiyuan.Test"))

5、サブクラス(の初期化親クラスのすべての初期化、そして最終的にインターフェイスを除いて、自分自身を初期化するには、クラスの初期化時には、それは単語のインターフェースの初期化、親インターフェースのみ初期化されない場合でも、インタフェースが初期化されていない実装しますプログラムは、静的変数のインタフェースを呼び出すときインタフェースの初期化につながる)(インターフェースの初期化ルール

6、開始が(クラスのmain()メソッドを含む)ベースの起動クラスを指定されたJava仮想マシン

 ここでの唯一の可能性は、クラスがそれのように開始とラベル付けされているものの最後の説明です

例えば、我々はHello.javaファイルを持っていますが、これはこんにちはクラスが含まれている、クラスPERSON1は、クラスPERSON2は、我々はこんにちはのjavaを実行している、このクラスHelloクラスが起動クラスとしてマークされている場合、コンソールに書き込みます。これは単にクラスのmainメソッドを持つことです

最初の6のイベントが発生したよりも、クラスをロードするために、JVMの仮想マシンを推進していきます。

これらの6つの場合に加えて、他の場合は、クラスがコード下記参照、パッシブ、アクティブおよびパッシブ呼び出しコール区別を呼び出しています

クラスTest2を{
  パブリック 静的 最終 int型、N = 2 。
  静的{ 
    のSystem.out.println( "試験" )。
  } 
} 

パブリック クラスTest1を{
  公共 静的 ボイドメイン(文字列[]引数){ 
    のSystem.out.println(Test2.n)。
  } 
}

どうなるかを考えてみて?どのような答え、正解は2です。初期化とTEST2ないので、コードのTEST2静的ブロックは、実行されていません

ここでは、最終的なキーワード欠かせない、我々はそれがfianl変更されたキーワードにはできません後、変数が変更されていることを知って、それが可変のコンパイル時定数と等価であることに注意してください(つまり、ある一定のと等価ではない)、定数はコンパイルのJavaで決定されている、いませんこれは、初期化する必要がありますが、fianalは削除、または最終int型のn =新しいランダムに最終int型のn = 2()。変数の値がnまたはn値がコンパイル時に決定することができないので、結果は、運用テスト、2になり、あなたはnの値を初期化することができます使用する必要があります。

おすすめ

転載: www.cnblogs.com/DDiamondd/p/10963096.html