これは、静的ブロックと静的メソッドを示すためのソース コードです。
class StaticDemo
{
static int count=10;
StaticDemo(){
count++;
}
static void display(){
System.out.println(count);
}
static{
System.out.println("Static Block written Before Main");
}
public static void main(String args[]){
StaticDemo t1=new StaticDemo();
StaticDemo t2=new StaticDemo();
StaticDemo.display();
t2.display();
}
static{
System.out.println("Static Block written After Main");
}
}
私はの出力を期待しています
Static Block written Before Main
Static Block written After Main
11
12
一方、私はの出力を取得します
Static Block written Before Main
Static Block written After Main
12
12
静的ブロックは最初に実行されるコード セットであり、したがって最初の 2 つのステートメントの順序であることを理解しています。しかし、JVM が StaticDemo クラスのオブジェクト t1 を作成すると、count の値が 11 ( 10+1 ) にインクリメントされませんか? プログラムで実際に初期化/インクリメントが発生するのはいつですか? ありがとうございました!