Что касается компилятора Java, неинициализированные локальные переменные - это хорошо. Пока вы не пытаетесь использовать их ценность, то есть. Только ваша IDE должна предупредить вас, что m
не используется. Мой Eclipse говорит: «Значение локальной переменной m не используется». Это всего лишь предупреждение, ничто не мешает запуску вашей программы.
Когда вы пытаетесь использовать (неопределенное) значение, как во втором фрагменте, сообщается об ошибке.
Рассмотрим этот фрагмент. Я повторно использую ваши две строки и добавил еще две.
int a=10,b=3,m;
System.out.println("Hello World "+a+" " + b);
m = 14;
System.out.println(m);
Он тоже работает нормально. Я включил его, чтобы проиллюстрировать, что когда компилятор читает ваши две строки, он не проверяет, инициализируется ли m
позже, и поэтому не находит причин для возражений до сих пор. (Кроме того, лучшим стилем кода было бы объявление m
только при его инициализации, а также объявление каждой переменной в отдельной строке.)
PS Если вы объявляете m
в отдельной строке или вместе с a
и b
, это не имеет значения для компилятора, это чисто стилистический вопрос.