Directely da Oracle site
I campi che vengono dichiarati, ma non inizializzate sarà impostato su una ragionevole di default dal compilatore. In generale, questo valore predefinito sarà zero o null, a seconda del tipo di dati. Affidarsi a tali valori predefiniti, tuttavia, è generalmente considerato uno stile di programmazione errato.
Il seguente grafico riepiloga i valori predefiniti per i tipi di dati sopra riportati.
Tipo di dati Valore predefinito (per i campi) byte 0 breve 0 int 0 lungo 0L float 0.0f doppia 0.0d char '\ u0000' String (o qualsiasi altro oggetto) null booleano falso
Le variabili locali sono leggermente diverse; il compilatore non assegna mai un valore predefinito a una variabile locale non inizializzata. Se non è possibile inizializzare la variabile locale in cui è stata dichiarata, assicurarsi di assegnargli un valore prima di tentare di utilizzarlo. L'accesso a una variabile locale non inizializzata comporterà un errore in fase di compilazione.
La speranza ti ha aiutato!
La risposta è nella domanda: uno ha un valore assegnato di 'null', gli altri non hanno alcun valore assegnato. – JonK
controlla [jls] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-16.html) – SomeJavaGuy
Consulta anche http://stackoverflow.com/questions/12461607/does- da-fare-a-differenza-se-i-use-a-default-initalisation-o-no-inizializzazione – Raedwald