Java: Введение в ООП
2026-02-26 20:00 Diff

Классы в Java особым образом связаны с типами данных. Посмотрите на пример:

Каким будет реальный тип в данном случае? Классы, сами по себе, ведут себя как типы. Поэтому типом переменной user будет User, то есть так:

В Java все типы данных делятся на две категории: примитивные и ссылочные. К примитивным относятся все виды чисел, символы и логический тип данных (булеан). К ссылочным - классы, массивы, строки. В зависимости от категории, значительно меняется поведение кода и об этом нужно знать. В этом уроке мы разберем отличия между этими категориями и научимся правильно с ними работать.

Для изучения нам понадобится пример какого-то класса, чьи объекты мы используем в примерах кода. Возьмем для простоты класс User с двумя полями и одним конструктором:

Значение по умолчанию

Примитивные данные всегда имеют значение, даже если они определяются без инициализации:

У ссылочных в качестве значения по умолчанию используется null. Это специальное значение, которое может быть использовано в качестве любого объекта

Присваивание

Примитивное значение всегда копируется при присваивании:

Ссылочные же данные не копируются. При присваивании переменные начинают указывать (ссылаться) на один и тот же объект:

Больше всего это проявляется при передаче данных в методы и их возврате оттуда. Ссылочное значение передается по ссылке, а значит его можно изменить изнутри метода.

Сравнение

Примитивные данные сравниваются по значению. Пять всегда равно пяти, истина всегда равна истине:

Ссылочные сравниваются по ссылкам, а не на основе содержимого. Объекты равны только сами себе. То что хранится внутри них - не важно.

Иногда объекты все же нужно сравнивать между собой и определять равенство по каким-то признакам. Для этого есть решение и мы познакомимся с ним в следующих курсах.