Ich bin neu in Java. Versuche unter statischen Variablen zu sein. Ich glaube, dass statische Variablen auf Klassenebene sind und nur einmal während des Klassenladens initialisiert werden. Allerdings, wenn ich das folgende Programm durch Eclipse ausführen, jedes Mal, wenn die statische Variable neu initialisiert wird. Fehle ich etwas?statische Variable wird reinitialisiert
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"));
}
}
}
Ich rufe die testStatic-Methode von einer anderen Testklasse.
public class CallTestClass
{
public static void main(String... args)
{
TestClass tc= new TestClass();
tc.testStatic();
}
}
Ich gehe davon aus, dass, wenn ich die tc.testStatic nennen(); Zum ersten Mal hat die statische Map in TestClass keine Werte, daher sollte "No Values in the map" gedruckt werden. Aber wenn ich das nächste Mal ausführe, sollte es zum else Teil gehen und print Map hat value: testvalue, da ich Wert in die vorherige Ausführung setze. Es scheint jedoch, dass die Karte jedes Mal neu initialisiert wird, wenn ich tc.testStatic() aufrufe; Methode.
Aber Ihr Code ruft nur 'testStatic' einmal auf? Wann ist das zweite Mal? –
Wenn Sie "ein zweites Mal ausführen" sagen, meinen Sie, dass Sie das gesamte Programm erneut ausführen? Sogar statische Variablen gehen verloren, wenn ein Programm endet. –
@MattiVirkkunen Ich führe die CallTestClass zweimal statt zwei Anrufe im Einzellauf. Wird die TestClass zweimal geladen? – GAK