Domyślne wartości Java powodują zamieszanie, dlaczego nie dla zmiennych zakresu funkcji? [duplikować]

To pytanie ma już tutaj odpowiedź:

Dlaczego zmienne lokalne nie są inicjowane w Javie? 14 odpowiedzi

Mam pewne zamieszanie z rozumowaniem stojącym za tym, co wydaje mi się niespójnością.

Na przykład

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

Tak więc, zgodnie z oczekiwaniami, wydrukujemy 0. Ale powiedzmy, że zamiast tego mieliśmy to

public class Test
{

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

To się nie skompiluje, narzekając, że nie zostało zainicjowane. Spodziewałem się, że wydrukuje 0 ...

Co prowadzi mnie do kilku pytań:

1) Dlaczego zmienne zakresu funkcji nie mają wartości domyślnych?

2) Czy powodem może być słowo kluczowe statyczne? I dlaczego?

questionAnswers(3)

yourAnswerToTheQuestion