Valori e inizializzazione predefiniti in Java

In base al mio riferimento , i tipi primitivi hanno valori predefiniti e Oggetti sono nulli. Ho provato un pezzo di codice.

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

La linea System.out.println(a); sarà un errore che punta alla variabile a che dice che la variable a might not have been initialized mentre nel dato riferimento, il integer avrà 0 come valore predefinito. Tuttavia, con il codice indicato qui sotto, stamperà effettivamente 0 .

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

Cosa potrebbe andare storto con il primo codice? La variabile di istanza di class si comporta diversamente dalle variabili locali?