私はJavaを初めて使用しています。静的変数のもとで試してみる。私は、静的変数はクラスレベルにあり、クラスロード中に一度だけ初期化されると考えています。しかし、以下のプログラムをEclipseで実行すると、静的変数が再初期化されるたびに実行されます。何か不足していますか?静的変数が再初期化される
public class TestClass
{
private static Map<String,String> map= new HashMap<>();
public void testStatic()
{
if(map.get("testkey")==null)
{
System.out.println("No values in the Map");
map.put("testkey","testvalue");
}
else
{
System.out.println("Map has value:"+ map.get("testkey"));
}
}
}
私は別のテストクラスからtestStaticメソッドを呼び出しています。
public class CallTestClass
{
public static void main(String... args)
{
TestClass tc= new TestClass();
tc.testStatic();
}
}
私はtc.testStatic()を呼び出すと仮定しています。 TestClassの静的マップには値がないため、「マップに値がありません」と表示されるはずです。しかし、次回実行した場合、else部分に移動してMapを出力する必要があります:前回の実行で値を入れているので、testvalue。しかし、tc.testStatic()を呼び出すたびに地図が再初期化されているようです。方法。
しかしあなたのコードは 'testStatic'を1回だけ呼び出しますか? 2回目はいつですか? –
「もう一度実行する」と言えば、プログラム全体をもう一度実行するという意味ですか?プログラムが終了すると静的変数さえ失われます。 –
@MattiVirkkunen私は、1回の実行で2回の呼び出しを行う代わりに、CallTestClassを2回実行しています。 TestClassが2回ロードされるのですか? – GAK