Hallo,
wann genau wird eine Klassenvariable "initialisiert"? Doch immer dann, wenn die Klasse geladen ist oder nicht? Ich habe ein wenig rumgebastelt und bin zu zwei meiner Meinung nach "identischen" Ergebnissen gekommen. Jedoch scheint bei Variante B die Klassenvariable mit dem default Wert 0 initialisiert zu werden. Kommen wir nun zu den Varianten, sonst wird es schwierig nachzuvollziehen, was ich überhaupt meine:
Variante A:
Die Ausgabe liefert 5, was korrekt ist.
Variante B:
Die Ausgabe liefert 2, was darauf schließen lässt, dass die Klassenvariable "b" mit 0 initialisiert worden ist. Doch warum? Wenn eine Klasse geladen ist, so werden meine Instanz- und Klassenvariablen mit dem Vorinitialisiert was ich gesetzt habe. Demzufolge sollte mir Variante B das gleiche liefern, wie Variante A...
Wieso tritt dieser Effekt auf? Stehe ich etwa so massiv auf dem Schlauch?
wann genau wird eine Klassenvariable "initialisiert"? Doch immer dann, wenn die Klasse geladen ist oder nicht? Ich habe ein wenig rumgebastelt und bin zu zwei meiner Meinung nach "identischen" Ergebnissen gekommen. Jedoch scheint bei Variante B die Klassenvariable mit dem default Wert 0 initialisiert zu werden. Kommen wir nun zu den Varianten, sonst wird es schwierig nachzuvollziehen, was ich überhaupt meine:
Variante A:
Code:
public class test {
public static void main(String[] args) {
M m = new M();
System.out.println(m.sum);
}
}
class M {
int a = 2;
static int b = 3;
int sum = 0;
public M() {
sum = a + b;
}
}
Die Ausgabe liefert 5, was korrekt ist.
Variante B:
Code:
public class test {
public static void main(String[] args) {
System.out.println(M.m.sum);
}
}
class M {
static M m = new M();
int a = 2;
static int b = 3;
int sum = 0;
public M() {
sum = a + b;
}
}
Die Ausgabe liefert 2, was darauf schließen lässt, dass die Klassenvariable "b" mit 0 initialisiert worden ist. Doch warum? Wenn eine Klasse geladen ist, so werden meine Instanz- und Klassenvariablen mit dem Vorinitialisiert was ich gesetzt habe. Demzufolge sollte mir Variante B das gleiche liefern, wie Variante A...
Wieso tritt dieser Effekt auf? Stehe ich etwa so massiv auf dem Schlauch?