В Java основные типы данных обрабатываются по-другому, поэтому появляются классы-оболочки, в которых играют роль два компонента, в частности автоупаковка и распаковка. Термин «автоупаковка» описывает процесс преобразования примитивного значения в объект базового класса-оболочки. При автоупаковке компилятор Java автоматически выполняет преобразование между примитивными типами и классами-оболочками объектов, которые им соответствуют. Целое число в целое, двойное в двойное и так далее и тому подобное. Если преобразование идет в обратном направлении, это называется распаковкой.

Курс Разработка серверной части Java может улучшить ваши навыки.

Вот простейший пример автобокса

Символ ch обозначает букву a. В остальных примерах этого раздела используются дженерики. См. лекцию Generics (Updated), если вы еще не знакомы с общим синтаксисом.

Вот пример кода

Например, преобразование int в класс Integer. Компилятор Java реализует автоупаковку, когда примитивное значение:

List‹Integer› li = new ArrayList‹›();

для (целое я = 1; я ‹ 50; я += 2)

li.добавить(я);

Даже если значения int добавляются к li как базовые типы, а не как объекты Integer, код все равно может быть успешно скомпилирован. Вам может быть интересно, почему компилятор Java не выдает ошибку времени компиляции, поскольку li — это не список значений int, а список объектов Integer. Из-за того, что он создает объект Integer из I, а затем добавляет этот объект в li, компилятор не сообщает об ошибке. Поэтому приведенный выше код преобразуется компилятором в следующий во время выполнения:

List‹Integer› li = new ArrayList‹›();

для (целое я = 1; я ‹ 50; я += 2)

li.add(Integer.valueOf(i));

  1. Передается в качестве параметра методу, который ожидает объект соответствующей информации о классе-оболочке.
  2. Назначается переменной соответствующего класса-оболочки.

С другой стороны, распаковка относится к превращению элемента типа-оболочки в его эквивалентное примитивное значение. В качестве примера рассмотрим преобразование из int в int. Компилятор Java применяет распаковку, когда объект класса-оболочки:

  1. Объект этого базового типа отправляется методу, который его ожидает.
  2. Присваивается переменной соответствующего примитивного типа.

Теперь давайте рассмотрим несколько преимуществ автоматической упаковки и распаковки, чтобы понять, почему мы их используем.

  1. Более чистый код проще понять благодаря автоупаковке и распаковке.
  2. Этот метод устраняет необходимость приведения типов при работе с базовыми типами и объектами класса Wrapper.

Стоимость курса Java-разработчика может достигать 60 000 индийских рупий.

Преобразование примитивного значения (например, int) в объект соответствующего класса-оболочки (Integer) называется автоупаковкой. Компилятор Java реализует автоупаковку, когда примитивное значение:

  1. Передается как параметр методу, который ожидает объект соответствующего класса-оболочки.
  2. Назначается переменной соответствующего класса-оболочки.

Рассмотрим следующий метод

public static int sumEven(List‹Integer›li) {

целая сумма = 0;

для (Целое число i: li)

if (i % 2 == 0)

сумма += я;

сумма возврата;

}

Вы можете быть озадачены тем, как компилятор Java смог правильно сгенерировать метод, учитывая, что объекты Integer не содержат операторов остатка (процентов) или унарного сложения (+=). Поскольку он использует метод intValue для преобразования целого числа в целое во время работы программы, компилятор не выдает ошибку при запуске:

public static int sumEven(List‹Integer›li) {

целая сумма = 0;

для (целое число i : li)

если (i.intValue() % 2 == 0)

сумма += i.intValue();

сумма возврата;

}

Преобразование элемента типа-оболочки (Integer) в его эквивалентное примитивное значение (int) называется распаковкой. Компилятор Java реализует распаковку, когда объект класса-оболочки

· Объект этого базового типа отправляется методу, который его ожидает.

· Присваивается переменной соответствующего примитивного типа.

Это показано в следующем сценарии распаковки:

· импортировать java.util.ArrayList;

· импортировать java.util.List;

· публичный класс Распаковка

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