Java: Введение в ООП
Теория: Классы обертки
В Java у каждого примитивного типа есть соответствующий "объектный" тип. Например, для int существует пара в виде Integer. Последний представлен классом и называется классом-оберткой.
То же самое и для всех остальных примитивных типов:
Классы-обертки нужны для нескольких целей, которых по разным причинам невозможно решить с помощью примитивных типов.
Совместимость и единообразие
Многие возможности Java завязаны на то, что типы представлены классами, только в этом случае они смогут быть использованы как параметры методов или их возвращаемое значение. К ним, например, относятся обобщенные типы и как их следствие коллекции. Все это мы рассмотрим в следующих курсах.
null
Примитивные типы всегда содержат какое-то осмысленное значение. На практике же, значение может быть не определено. Особенно часто такое происходит, когда данные поступают из внешних источников. Для представления таких данных нужно специальное обозначение и возможность использовать это значение. В Java, как и в большинстве других языков, таким значением является null. Его можно использовать только с классами-обертками.
По этой причине, множество методов ожидает на вход классы-обертки, а не примитивные типы.
Утилиты и значения
Классы-обертки содержат в себе полезные значения и методы, для своих типов. Например, в Integer есть данные о максимальном и минимальном значениях для типа, там же можно найти методы, которые преобразуют другие типы в числа.
Почему так устроено?
Зачем тогда нужны примитивные типы если есть классы-обертки? Ответ кроется в производительности. Работа с примитивными типами как объектами значительно ухудшает производительность программы. Поэтому по умолчанию создаются объекты именно примитивных типов.
Боксинг и анбоксинг (Boxing and Unboxing)
По логике, такая система должна приводить к постоянному конвертированию типов в коде, так как где-то создаются примитивные типы, где-то нужны классы-обертки и наоборот. К счастью, этого почти никогда не происходит благодаря механизму автобоксинга (Autoboxing). Тип преобразуется автоматически в тот момент, когда это нужно.
По этой схеме работает и передача аргументов в методы и возврат из них.
Рекомендуемые программы
Завершено
0 / 11


