Автоматическое присвоение нулю применяется только к элементам, а не к локальным переменным. Если это локальная переменная и = 0
опущено, то эта переменная не имеет значения, даже ноль. Попытка использовать значение до того, как оно будет присвоено, приведет к ошибке компиляции. Например, этот код пытается использовать неинициализированную локальную переменную:
public class Program
{
public static void main(String[] args)
{
int numOfGuesses; // local variable
System.out.println(numOfGuesses);
}
}
и выдает эту ошибку компиляции:
Program.java:6: variable numOfGuesses might not have been initialized
System.out.println(numOfGuesses);
Принимая во внимание, что этот код, использующий член, работает и выдает ноль:
public class Program
{
int numOfGuesses; // member variable
public void run()
{
System.out.println(numOfGuesses);
}
public static void main(String[] args)
{
new Program().run();
}
}
Для членов я склонен присваивать нулевое объяснение, если в моем коде используется тот факт, что начальное значение равно нулю, и опускаю присвоение, если в моем коде не используется начальное значение (например, если это значение назначено конструктор или в другом месте). Результат одинаков в любом случае, так что это просто проблема стиля.