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 odpowiedziMam 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?