Хотя не стоит привычно разделять объявление и инициализацию
В некоторых случаях требуется для этого (см. Пример try catch),
В некоторых случаях это улучшает читаемость кода (см. Пример Макса Шмидта),
В некоторых случаях это делает ваш код более надежным.
Чтобы проиллюстрировать последний пункт, рассмотрим измененный пример Макса Шмидта:
Dog d = null;
if (input.equals("lab")) {
d = new Labrador();
} else if (input.equals("bull")) {
d = new Bulldog();
}
d.walk();
Видишь ошибку? Если input
не является ни "lab"
, ни "bull"
, код умрет, когда мы выгуливаем null
собаку.
Однако, если мы удалим инициализацию d
, то компилятор скажет нам, что есть путь через код, который оставляет d
неинициализированным. Если мы обращаем внимание, мы видим ошибку и исправляем ее до запуска кода.