Интервьюер: В чем разница между int и Integer? Зачем нужны классы-оболочки?

интервью Java задняя часть
Интервьюер: В чем разница между int и Integer? Зачем нужны классы-оболочки?

Это пятый день моего участия в ноябрьском испытании обновлений, подробности о мероприятии:Вызов последнего обновления 2021 г.

Важное примечание: эта статья является одной из серии статей блоггера «Избранные вопросы для интервью — основы», ознакомьтесь с серией статей об интервью.пожалуйста следуйте за мной. Адрес с открытым исходным кодом Gitee:git ee.com/oppo/inter V…

Java — это язык со строгой типизацией данных, поэтому все свойства должны иметь тип данных. Как и в супермаркете Metro, если вы хотите отправиться за покупками, у вас сначала должна быть членская карта (проведите картой, чтобы войти). ​

PS: Java 10 имеет вывод типа локальной переменной, вы можете использовать var для замены определенного типа данных, но на этапе байт-кода переменные Java по-прежнему имеют четкий тип данных, а вывод типа локальной переменной имеет много ограничений и несоответствий. не текущая основная версия приложения, поэтому здесь она не будет подробно обсуждаться.

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

базовый тип данных

Всего в Java существует 8 примитивных типов, включая 4 целочисленных типа, 2 типа с плавающей запятой, 1 символьный тип char, используемый для представления кодировки Unicode, и 1 логический тип, используемый для представления значений true и false.

  • 4 целочисленных типа: int, short, long, byte
  • 2 типа с плавающей запятой: float, double
  • Тип персонажа: символ
  • истинный и ложный тип: логический

Базовый тип данных относится к неделимому атомарному типу данных.Значение этого типа хранится непосредственно в памяти, и к данным можно получить прямой доступ через адрес памяти, и эта область памяти может хранить только значение этого типа.int — распространенный базовый тип данных в Java..

Классы упаковки и их роль

Поскольку концепция дизайна Java заключается в том, что все является объектом, во многих случаях с ним нужно работать в форме объекта, например, hashCode() для получения хеш-значения или getClass() для получения класса. ​

Роль упаковки

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

базовый тип тип упаковки
int Integer
short Short
byte Byte
long Long
float Float
double Double
char Character
boolean Boolean

Разница между целым числом и целым числом

Разница между int и Integer в основном отражается в следующих аспектах:

  1. Типы данных разные: int — базовый тип данных, а Integer — тип данных-оболочка;
  2. Значения по умолчанию разные: значение по умолчанию для int равно 0, а значение по умолчанию для Integer равно null;
  3. Способ хранения в памяти разный: int напрямую хранит значения данных в памяти, а Integer фактически хранит ссылки на объекты, при создании нового Integer фактически генерируется указатель на этот объект;
  4. Способ создания экземпляра другой: Integer должен быть создан, прежде чем его можно будет использовать, в то время как int не требуется;
  5. Переменные сравниваются по-разному: int может использовать == для сравнения двух переменных на равенство, в то время как Integer должен использовать equals для сравнения двух переменных на равенство.

Суммировать

Integer — это класс-оболочка int, и их различия в основном отражаются в пяти аспектах: разные типы данных, разные значения по умолчанию, разные способы хранения в памяти, разные способы создания экземпляров и разные способы сравнения переменных. Существование класса-оболочки решает проблемы параметров универсального типа, сериализации, преобразования типов и высокочастотного интервального кэширования данных, которые не могут быть выполнены базовыми типами данных. ​

Ссылки и благодарности

«Эффективный код: руководство по разработке на Java» ​

Обратите внимание на официальный аккаунт: анализ реальных вопросов Java-интервью, см. больше вопросов Java-интервью.