Приветствую, коллеги. Решил показать несколько способов инициализации полей в Java. Статья может быть полезна тем, кто только начал изучать программирование.
Для запуска демонстрационных примеров создадим Java класс Demo с методом main(). В методе main() выведем что-нибудь на экран, чтобы убедиться, что программа запускается:
public class Demo {
public static void main(String[] args) {
System.out.println("Hello JavaRush.");
}
}
Далее создадим Java класс кота, добавим в него несколько полей: имя, возраст.
class Cat {
String name;
int age;
}
В методе main()
создадим двух котов. Попробуем вывести на экран их имя и возраст:
public class Demo {
public static void main(String[] args) {
Cat cat1 = new Cat();
Cat cat2 = new Cat();
System.out.println("Имя первого кота: " + cat1.name);
System.out.println("Возраст первого кота: " + cat1.age);
System.out.println();
System.out.println("Имя второго кота: " + cat2.name);
System.out.println("Возраст второго кота: " + cat2.age);
}
}
class Cat {
String name;
int age;
}
Запустив программу, получим вывод:
Имя первого кота: null
Возраст первого кота: 0
Имя второго кота: null
Возраст второго кота: 0
Так как мы не инициализировали эти поля, они получили значения по умолчанию. String
относится к ссылочным типам, а для всех ссылочных типов значение по умолчанию это null
.
int
относится к примитивным типам. У каждого примитивного типа есть свое значение по умолчанию:
Как можно передать в наши поля реальные значения (например, имя "Том" и возраст "два года")?
Первый способ — инициализировать поля сразу во время объявления:
public class Demo {
public static void main(String[] args) {
Cat cat1 = new Cat();
Cat cat2 = new Cat();
System.out.println("Имя первого кота: " + cat1.name);
System.out.println("Возраст первого кота: " + cat1.age);
System.out.println();
System.out.println("Имя второго кота: " + cat2.name);
System.out.println("Возраст второго кота: " + cat2.age);
}
}
class Cat {
String name = "Том";
int age = 2;
}
Запускаем программу и видим, что поля инициализированы нашими значениями:
Имя первого кота: Том
Возраст первого кота: 2
Имя второго кота: Том
Возраст второго кота: 2
При этом сколько бы котов мы не создавали, они все будут иметь одинаковые имя и возраст. То есть мы просто поменяли значения null и 0 на “Том” и 2.
Следующий способ инициализации – через конструктор. Создадим коту конструктор с двумя параметрами. Обычно имена параметров делают такими же, как и имена полей. В таком случае для обращения к полям нужно использовать слово this
, а к параметрам конструктора можно обращаться обычным способом:
public Cat(String name, int age) {
this.name = name;
this.age = age;
}
Еще раз:
Добавим также пустой конструктор без параметров, чтобы наш предыдущий пример был работоспособным.
В методе
main()
добавим еще двух котов с помощью конструктора с параметрами.
public class Demo {
public static void main(String[] args) {
Cat cat1 = new Cat();
Cat cat2 = new Cat();
System.out.println("Имя первого кота: " + cat1.name);
System.out.println("Возраст первого кота: " + cat1.age);
System.out.println();
System.out.println("Имя второго кота: " + cat2.name);
System.out.println("Возраст второго кота: " + cat2.age);
Cat cat3 = new Cat("Рыжик", 5);
Cat cat4 = new Cat("Барсик", 9);
System.out.println();
System.out.println("Имя третьего кота: " + cat3.name);
System.out.println("Возраст третьего кота: " + cat3.age);
System.out.println();
System.out.println("Имя четвертого кота: " + cat4.name);
System.out.println("Возраст четвертого кота: " + cat4.age);
}
}
class Cat {
String name;
int age;
public Cat(String name, int age) {
this.name = name;
this.age = age;
}
public Cat() {
}
}
Запустим программу:
Имя первого кота: null
Возраст первого кота: 0
Имя второго кота: null
Возраст второго кота: 0
Имя третьего кота: Рыжик
Возраст третьего кота: 5
Имя четвертого кота: Барсик
Возраст четвертого кота: 9
Как видим, созданные таким способом коты обладают большей индивидуальностью.
Существуют и другие способы инициализации полей в Java, но, для начала достаточно и этих.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ