Die automatische Zuweisung auf Null gilt nur für Mitglieder, nicht für lokale Variablen. Wenn es sich um eine lokale Variable handelt und die = 0
weggelassen wird, hat diese Variable keinen Wert, nicht einmal Null. Wenn Sie versuchen, den Wert vor der Zuweisung zu verwenden, führt dies zu einem Kompilierungsfehler. Dieser Code versucht beispielsweise, eine nicht initialisierte lokale Variable zu verwenden:
und erzeugt diesen Kompilierfehler:
%Vor%Während dieser Code mit einem Member arbeitet und null ausgibt:
%Vor%Für Mitglieder tendiere ich dazu, null explizit zuzuweisen, wenn mein Code die Tatsache verwendet, dass der anfängliche Zalue Null ist, und die Zuweisung weglässt, wenn mein Code nicht den Anfangswert verwendet (wenn er z. B. in der Konstruktor oder anderswo). Das Ergebnis ist das gleiche oder so, es ist nur ein Stilproblem.
Die Java-Kompilierung und die Laufzeit unterscheiden sich.
Beim Ausführen des Programms werden alle Klassen mit Klassenladeprogrammen geladen, und sie tun Folgendes:
Dies geschieht, wenn class zum ersten Mal verwendet wird . Ihre Ausführungsreihenfolge wird durch ihre Reihenfolge im Code definiert.
statische Blöcke ausführen
%Vor%initialisieren statische Variablen
public static int number;
Dies wird auf Null 0 initialisiert;
Die nächste initialisierte Gruppe von Initialisierungen ist Erstellen eines Objekts . Ihre Ausführungsreihenfolge wird durch ihre Reihenfolge im Code definiert.
renne nicht statischen Block
%Vor%initialisiert nicht statische (Instanz-) Variablen
public int instance_number;
Und das ist wann und warum gibt es Standard-Initialisierung! Dies gilt nicht für Methoden, da sie keinen ähnlichen Mechanismus wie Klassen haben. Im Grunde bedeutet dies, dass Sie EXPLICITLY für jede Methodenvariable initialisieren müssen.% Co_de%