Warum löst dieser Code keine NullPointerException aus?

Ich habe gerade mit meinem Freund über das Aufrufen statischer Methoden unter Verwendung des Klassennamens gesprochen und diesen Code ausprobiert und erwartet, dass er zur Laufzeit NPE auslöst. Ich möchte nur die Ausführungsreihenfolge verstehen.

public class One {

    public static void method() {
        System.out.println("in static one");
    }
}

public class Two {

    static One o;

    public static void main(String[] args) {
        o.method(); // expected NPE here, as o is null
    }
}

Ich weiß, dass statische Methoden mit ihrem Klassennamen aufgerufen werden sollten, ich weiß sogar, dass IDEs eine Compiler-Warnung ausgeben würden, wenn wir statische Methoden mit einer Instanz aufrufen. aber wir könnten sie auch aufrufen, indem wir eine Instanz erstellen, aber ich habe hier nie eine Instanz erstellt,o sollte seinen Standardwert null bekommen, also aufrufeno.method() sollte zur Laufzeit eine NPE auslösen, tut es aber nicht. Könnt ihr bitte etwas Licht ins Dunkel bringen, wie die Ausführungsreihenfolge in diesem Code ist.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage