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

В Java у каждого примитивного типа есть соответствующий "объектный" тип. Например, для int существует пара в виде Integer. Последний представлен классом и называется классом-оберткой.

То же самое и для всех остальных примитивных типов:

Классы-обертки нужны для нескольких целей, которых по разным причинам невозможно решить с помощью примитивных типов.

Совместимость и единообразие

Многие возможности Java завязаны на то, что типы представлены классами, только в этом случае они смогут быть использованы как параметры методов или их возвращаемое значение. К ним, например, относятся обобщенные типы и как их следствие коллекции. Все это мы рассмотрим в следующих курсах.

null

Примитивные типы всегда содержат какое-то осмысленное значение. На практике же, значение может быть не определено. Особенно часто такое происходит, когда данные поступают из внешних источников. Для представления таких данных нужно специальное обозначение и возможность использовать это значение. В Java, как и в большинстве других языков, таким значением является null. Его можно использовать только с классами-обертками.

По этой причине, множество методов ожидает на вход классы-обертки, а не примитивные типы.

Утилиты и значения

Классы-обертки содержат в себе полезные значения и методы, для своих типов. Например, в Integer есть данные о максимальном и минимальном значениях для типа, там же можно найти методы, которые преобразуют другие типы в числа.

Почему так устроено?

Зачем тогда нужны примитивные типы если есть классы-обертки? Ответ кроется в производительности. Работа с примитивными типами как объектами значительно ухудшает производительность программы. Поэтому по умолчанию создаются объекты именно примитивных типов.

Боксинг и анбоксинг (Boxing and Unboxing)

По логике, такая система должна приводить к постоянному конвертированию типов в коде, так как где-то создаются примитивные типы, где-то нужны классы-обертки и наоборот. К счастью, этого почти никогда не происходит благодаря механизму автобоксинга (Autoboxing). Тип преобразуется автоматически в тот момент, когда это нужно.

По этой схеме работает и передача аргументов в методы и возврат из них.