
Поля, принадлежащие классу/объекту, по умолчанию инициализируются как 0 (ноль) для примитивных типов, и как null для ссылочных типов. Локальные переменные методов - нет. Если их не инициализировать явно, они так и останутся неинициализированными.
class A {
static int i;
String s;
static void a() {
int i;
String s;
int j = i + 5; // ошибка компиляции: переменная должна быть проинициализирована
String s2 = s + "some word"; // ошибка компиляции: переменная должна быть проинициализирована
}
public static void main(String[] args) {
A a = new A();
System.out.println(A.i); // 0
System.out.println(a.s); // null
}
}