Confusión de los valores predeterminados de Java, ¿por qué ninguno para las variables con alcance de función? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Por qué las variables locales no están inicializadas en Java? 14 respuestas

Estoy teniendo alguna confusión con el razonamiento detrás de lo que me parece ser una inconsistencia.

Por ejemplo

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

Así que se imprimirá 0, como se esperaba. Pero digamos que tuvimos esto en su lugar,

public class Test
{

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

Esto no se compilará para mí, quejándose de que no se haya inicializado. Esperaba que se imprimiera 0 ...

Lo que me lleva a algunas preguntas:

1) ¿Por qué no funcionan las variables con ámbito tienen valores predeterminados?

2) ¿Podría ser la razón la palabra clave estática? ¿Y por qué?

Respuestas a la pregunta(3)

Su respuesta a la pregunta