Verwirrung bei Java-Standardwerten, warum keine für funktionsbezogene Variablen? [Duplikat]

Diese Frage hat hier bereits eine Antwort:

Warum werden lokale Variablen in Java nicht initialisiert? 14 Antworten

Ich habe einige Verwirrung mit der Begründung, die meiner Meinung nach eine Inkonsistenz ist.

Zum Beispiel

public class Test
{
    static int a;
    public static void main(String[] args)
    {
        System.out.println(a);
    }
}

Damit wird erwartungsgemäß 0 ausgegeben. Aber sagen wir, wir hätten das stattdessen,

public class Test
{

    public static void main(String[] args)
    {
        int a;
        System.out.println(a);
    }
}

Dies wird für mich nicht kompiliert, da ich mich beschwere, dass a nicht initialisiert wurde. Ich hatte damit gerechnet, dass es 0 ausgibt ...

Was mich zu einigen Fragen führt:

1) Warum haben funktionsbezogene Variablen keine Standardwerte?

2) Könnte das statische Schlüsselwort der Grund sein? Und warum?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage