静的変数は、オブジェクトごとではなく、クラスがロードされたときに1回だけ作成および初期化されることを知っていました。
以下に示すコードでは、次のようにしています。クラスAでint変数 "a"を静的として宣言し、値5を割り当てました。mainが実行されると、値を6に変更し、プログラムを次のようにします。無限にループします。したがって、現在「a」の値は6です。
今私がやろうとしたのは、クラスAがまだループしているときに、他のクラスクラスBからこの変数にアクセスしようとしたことです。クラスBを実行すると、6が出力されるはずです(クラスB「a」の値を実行するまでに6)に変更されましたが、驚くべきことに、それでも5が得られました。
「a」を静的と宣言したのに、なぜこれが発生するのですか?このアプローチの何が問題になっているのか理解できません。
class A{
static int a=5;
public static void main(String args[]){
System.out.println(A.a+"");
a=6;
while(true){
}
}
}
class B{
public static void main(String args[]){
System.out.println(A.a+"");
}
}