Hallo allerseits,
1)
Bei
Galileo Computing :: Java ist auch eine Insel – 5.6 Klassen- und Objektinitialisierung *
steht, daß die Vorbelegung eines Attributs bedeutet, daß der Konstruktor von Compiler eigenmächtig geändert wird:
"Wenn der Compiler eine Klasse mit Objekt- oder Klassenvariablen sieht, dann müssen diese Variablen an irgendeiner Stelle initialisiert werden. Werden sie einfach deklariert und nicht mit einem Wert initialisiert, so regelt die virtuelle Maschine die Vorbelegung. Spannender ist der Fall, wenn den Variablen explizit ein Wert zugewiesen wird (der auch 0 sein kann). Dann erzeugt der Compiler automatisch einige zusätzliche Zeilen"
Stimmt das ?
2)
Wie ist das bei der Vorbelegung (Initialisierung) einer static-Klassenvariable
(wie z.B: static double literPreis = 100) ?
Vermutlich wird dann der Compiler nicht im Konstruktor automatisch einige zusätzliche Zeilen erstellen.
Aber wo dann?
Im statischen Initialisierungsblock?
static{
...
}
class Kuh{
private String name;
private double milchLeistung;
private static double literPreis = 100;
...
}
mfg
ernst
1)
Bei
Galileo Computing :: Java ist auch eine Insel – 5.6 Klassen- und Objektinitialisierung *
steht, daß die Vorbelegung eines Attributs bedeutet, daß der Konstruktor von Compiler eigenmächtig geändert wird:
"Wenn der Compiler eine Klasse mit Objekt- oder Klassenvariablen sieht, dann müssen diese Variablen an irgendeiner Stelle initialisiert werden. Werden sie einfach deklariert und nicht mit einem Wert initialisiert, so regelt die virtuelle Maschine die Vorbelegung. Spannender ist der Fall, wenn den Variablen explizit ein Wert zugewiesen wird (der auch 0 sein kann). Dann erzeugt der Compiler automatisch einige zusätzliche Zeilen"
Stimmt das ?
2)
Wie ist das bei der Vorbelegung (Initialisierung) einer static-Klassenvariable
(wie z.B: static double literPreis = 100) ?
Vermutlich wird dann der Compiler nicht im Konstruktor automatisch einige zusätzliche Zeilen erstellen.
Aber wo dann?
Im statischen Initialisierungsblock?
static{
...
}
class Kuh{
private String name;
private double milchLeistung;
private static double literPreis = 100;
...
}
mfg
ernst
Zuletzt bearbeitet: