Назад к вопросам
Junior
84
questionbank

Что такое обертки (Wrapper классы) в Java?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Обертки (Wrapper классы) в Java — это специальные классы, представляющие собой ссылочные типы данных для примитивных типов. Они позволяют работать с примитивами как с объектами.

Основные характеристики и назначение:

  • Объекты для примитивов: Каждый примитивный тип (byte, short, int, long, float, double, boolean, char) имеет соответствующий класс-обертку (Byte, Short, Integer, Long, Float, Double, Boolean, Character).
  • Наследование от Object: Все классы-обертки являются потомками класса Object, что позволяет использовать их в коллекциях (таких как ArrayList, HashMap, HashSet) и других API, работающих с объектами.
  • Поля и методы: Классы-обертки содержат полезные методы для работы с соответствующими примитивными значениями (например, парсинг строк, сравнение). Также они содержат константы (например, Integer.MAX_VALUE, Integer.MIN_VALUE).
  • Автоупаковка (Autoboxing) и автораспаковка (Unboxing): Механизмы Java, позволяющие автоматически преобразовывать примитивный тип в его обертку и обратно.
    // Автоупаковка
    Integer numObject = 10; // Примитив int автоматически упаковывается в Integer
    
    // Автораспаковка
    int numPrimitive = numObject; // Объект Integer автоматически распаковывается в примитив int
    
  • Неизменяемость (Immutability): Объекты классов-оберток неизменяемы. После создания их значение нельзя изменить.
    Integer a = 5;
    Integer b = a; // b ссылается на тот же объект
    a = 10; // a теперь ссылается на новый объект с значением 10, объект с 5 остался
    

Применение:

  • Работа с коллекциями Java.
  • Использование в Stream API.
  • Nullable значения (объект-обертка может быть null, примитив — нет).
  • Вспомогательные методы для преобразования типов и константы.
  • В дженериках (Generics), которые не могут работать с примитивными типами напрямую.