Ваши переменные в вашем коде имеют нет типов, но x
сначала создается перед вызовом конструктора. (Выполните нулевую проверку для x
в конструкторе, чтобы узнать).
Что касается рекомендаций, это зависит от вас. Одна вещь, например в JavaBeans, поскольку я обычно не пишу открытый конструктор по умолчанию (без аргументов), я склонен инициализировать некоторые поля при объявлении (если они должны быть не нулевыми). В противном случае я создаю их экземпляр на конструкторе.