我是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中的靜態地圖將沒有值,所以它應該打印出「地圖中沒有值」。但是如果我運行下一次它應該去其他部分和打印地圖有價值:測試值,因爲我在前面的執行價值。不過,每次我調用tc.testStatic()時,映射似乎都會重新初始化。方法。
但是你的代碼只調用'testStatic'一次?第二次什麼時候? –
當你說「再次運行它」時,你的意思是再次運行整個程序?程序結束時,即使靜態變量也會丟失。 –
@MattiVirkkunen我正在運行CallTestClass兩次,而不是在單次運行中進行兩次調用。它是否使TestClass加載兩次? – GAK