JavaRush /Java блог /Random /Инициализация полей
Автор
Pavlo Plynko
Java-разработчик в CodeGym

Инициализация полей

Статья из группы Random
Приветствую, коллеги. Решил показать несколько способов инициализации полей в Java. Статья может быть полезна тем, кто только начал изучать программирование. Инициализация полей - 1Для запуска демонстрационных примеров создадим 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 относится к примитивным типам. У каждого примитивного типа есть свое значение по умолчанию:
Инициализация полей - 2
Как можно передать в наши поля реальные значения (например, имя "Том" и возраст "два года")? Первый способ — инициализировать поля сразу во время объявления:

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;
}
Еще раз:
Инициализация полей - 3
Добавим также пустой конструктор без параметров, чтобы наш предыдущий пример был работоспособным. В методе 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, но, для начала достаточно и этих.
Комментарии (15)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Andrey Kuimov Уровень 2
14 ноября 2021
качественно и просто объяснил. спасибо! отдельное спасибо за картинку с надписями полей и параметров конструктора!
Anton Уровень 10 Expert
13 апреля 2021
Здравствуйте. Спасибо за статью, сразу всё стало понятно, кроме внезапно появившейся в тексте фразы без объяснений: "Добавим также пустой конструктор без параметров, чтобы наш предыдущий пример был работоспособным" Зачем он там? Почему он не будет работать без него? Можно ответить в виде ссылки на статью...
Zhanna Уровень 20
25 августа 2020
😀
Pavel Уровень 15
22 декабря 2019
не совсем понял, если можно поясните, разницу между созданием конструктора с параметрами и без
13 декабря 2019
Cпасибо
Олег Коньшин Уровень 16
1 мая 2018
А можно инициализировать вот так: Cat cat3 = new Cat("Рыжик", 5); не создавая конструктор?