Java: Введение в ООП
Теория: Ссылочные типы данных

Классы в Java особым образом связаны с типами данных. Посмотрите на пример:
Каким будет реальный тип в данном случае? Классы, сами по себе, ведут себя как типы. Поэтому типом переменной user будет User, то есть так:
В Java все типы данных делятся на две категории: примитивные и ссылочные. К примитивным относятся все виды чисел, символы и логический тип данных (булеан). К ссылочным - классы, массивы, строки. В зависимости от категории, значительно меняется поведение кода и об этом нужно знать. В этом уроке мы разберем отличия между этими категориями и научимся правильно с ними работать.
Для изучения нам понадобится пример какого-то класса, чьи объекты мы используем в примерах кода. Возьмем для простоты класс User с двумя полями и одним конструктором:
Значение по умолчанию
Примитивные данные всегда имеют значение, даже если они определяются без инициализации:
У ссылочных в качестве значения по умолчанию используется null. Это специальное значение, которое может быть использовано в качестве любого объекта
Присваивание
Примитивное значение всегда копируется при присваивании:
Ссылочные же данные не копируются. При присваивании переменные начинают указывать (ссылаться) на один и тот же объект:
Больше всего это проявляется при передаче данных в методы и их возврате оттуда. Ссылочное значение передается по ссылке, а значит его можно изменить изнутри метода.
Сравнение
Примитивные данные сравниваются по значению. Пять всегда равно пяти, истина всегда равна истине:
Ссылочные сравниваются по ссылкам, а не на основе содержимого. Объекты равны только сами себе. То что хранится внутри них - не важно.
Иногда объекты все же нужно сравнивать между собой и определять равенство по каким-то признакам. Для этого есть решение и мы познакомимся с ним в следующих курсах.
Рекомендуемые программы
Завершено
0 / 11


