Почему нельзя инициализировать переменную не в строке объявления? Но до обращения к ней
//так выдает ошибку при инициализации
public class Hello_World {
public int id;
id =100;
}
//а вот так работает
public class Hello_World {
public int id = 100;
}
Ответы (2 шт):
По идеи, нужно всегда инициализировать переменную чтобы потом не вылетало исключение NullPointerException. В данном случае как написал коллега.
это просто не валидный синтакис – @Stranger in the Q
Совет такой, что лучше всегда инициализировать переменную при её создание, пускай это будет 0, null или для строковых переменных "", лучше всегда инициализировать, а в дальнейшем коде, если она Вам будет нужна, то присвоите ей значение, которое Вам нужно.
Не призываю Вас так делать, потому что это сугубо моё мнение)
Это объявление переменной
public int id;
Объявление может быть с инициализацией
public int id = 100;
А это операция присваивания
id = 100;
Инициализация и присваивание - это разные синтаксические конструкции, хоть и выглядят похоже.
На уровне объявления класса возможны только другие объявления - объявления полей, методов, конструкторов и блоков инициализации. Операции могут быть только внутри блоков инициализации, конструкторов и методов.
P.S. Во время компиляции все операции инициализации нестатических полей будут автоматически перенесены в конструктор по умолчанию. Так что на уровне байткода присваивания отделены от объявлений.