Автоупаковка/распаковка Java - Материалы Java

Java программист Java EE Язык программирования

вчераПримитивные типы данных Java и ссылочные типыВ статье отсутствуют несколько изображений, которые были добавлены.Если вам нужно оглянуться назад, эта серия статей была впервые опубликована в публичном аккаунте: sayayJava.

существуетСбивающий с толку Java-код — Java ThingВ статье мы говорили, что компилятор автоматически добавляет за нас метод valueOf? Можно забыть, давайте рассмотрим, исходный код выглядит следующим образом:

Скомпилируем его, получим файл класса, декомпилируем его, и он станет следующим кодом:

Этот процесс добавления метода valueOf часто называют процессом упаковки в Java.

Всего естьЧетыре вида и восемь видовОсновные типы данных, кроме этих типов, остальныеОбъект, то есть ссылочный тип.В JDK1.5 к этим четырем типам и восьми базовым типам добавляются классы-оболочки, соответствующие следующему:

Основной тип Тип упаковки

Категория 1: Целое число
byte Byte
short Short
int Integer
long Long

Вторая категория: с плавающей запятой
float Float
double Double

Третья категория: логические
boolean Boolean

Четвертая категория: тип характера
char Character

Посмотрите на следующий код:

Скомпилированный файл класса:

Можно видеть, что когда наша переменная объявлена ​​как тип объекта и назначена как базовый тип данных, компилятор Java упаковывает наш базовый тип данных, и когда наша переменная объявлена ​​как базовый тип и назначена как тип объекта, компилятор распаковывает наш тип объекта. Кажется, что все договорились, используйте valueOf в качестве метода упаковки и отдельно выражайте метод распаковки.Как правило, это базовый тип данных плюс Value в качестве метода распаковки, такие как intValue, longValue, booleanValue и другие типы упаковки аналогичны Я не буду тестировать их по одному, давайте попробуем сами.

Преобразование переменной int в объект Integer называется упаковкой.
И наоборот, преобразование объекта Integer в значение типа int называется распаковкой.
Вышеупомянутые методы упаковки и распаковки автоматически добавляются при компиляции в файлы классов и не требуют ручного вмешательства программистов, поэтому их еще называют автоматическим упаковкой/распаковкой.

Увидев это, некоторые друзья скажут: ах, это так хлопотно, базовые типы уже есть, зачем использовать классы-обертки?

Некоторые говорят, что это делается для того, чтобы сделать Java чисто объектно-ориентированным языком, лол.

На мой взгляд, есть следующие моменты:

1. Объект является симуляцией реального мира(Все является объектом, и вещи в реальном мире абстрагируются в объекты объектно-ориентированным способом.) В действительности предположим, что мы обращаемся к системе (базе данных) для запроса возраста ученицы Ли Си, как показано ниже:

В это время регистратор не ввел возрастной элемент для Ли Си. Если мы используем int для объявления возраста, все знают, что int должен быть инициализирован. По умолчанию это 0. Что означает 0, не родился? (Конечно, -1 также может использоваться для обозначения того, что оно не введено, но это всегда выглядит немного странно.) Если оно выражено как целое число, такой проблемы нет. Если оно равно нулю, оно не вводится.

2. Обеспечивает поддержку дженериков.

3. Предоставляет богатые свойства и API

Обратите внимание, чтобы сравнить, равны ли два значения, используйте метод equals, я вСбивающий с толку Java-код — Java ThingВ статье это уже было очень ясно, поэтому я не буду здесь углубляться.

4. Пока не запомнил, но добавлю, когда вспомню.

Разберем представление разных методов объявления в памяти, код выглядит следующим образом:

Производительность выглядит следующим образом:


Если вам нравится эта серия статей, пожалуйста, поставьте лайк или поделитесь со мной. Ваша поддержка является движущей силой для меня, чтобы продолжать. Вы также можете оставить сообщение в области комментариев. Если у вас есть возможность, эта колонка объяснит это. Наконец , не забудьте обратить внимание. Проверьте меня.

Перепечатка приветствуется, но с указанием "автора" и "оригинального адреса". Пожалуйста, сохраните этот абзац в тексте для перепечатки, спасибо за уважение авторских прав. Для коммерческого воспроизведения или публикации, пожалуйста, свяжитесь с автором для получения разрешения.

Предыдущий:Базовые типы данных Java и ссылочные типы — это то, что есть в Java

Следующий:Объектная ориентация — штука в Java