Name1 name2 = new Name1();
В этой строке вы делаете две вещи:
- объявляем переменную с именем
name2
типа Name1
- создать объект, вызвав конструктор без аргументов класса
Name1
и присвоить ссылку на вновь создаваемый объект переменной name2
Вы также можете разделить шаги:
Name1 name2;
name2 = new Name1();
Во втором фрагменте кода вы выполняете только шаг 2 и повторно используете (то есть перезаписываете) уже существующую переменную name2
. Это возможно, потому что после объявления переменные могут использоваться (читать из и записываться в) так часто, как вы хотите, в одной и той же области видимости. Исключением являются final
переменные, которые вы можете записать только один раз. Если вы сделаете это:
final Name1 name2 = new Name1();
name2 = new Name1();
Вы получите ошибку компилятора, потому что вы пытаетесь использовать ту же переменную во второй раз. Это может быть полезно, поскольку предотвращает ошибки программиста, возникающие при повторном использовании переменных.