Понимание обёрточных классов Java: типы, преобразования и преимущества
Обёрточные классы в Java
В этом уроке мы изучим обёрточные классы Java на практических примерах.
Обёрточные классы преобразуют примитивные типы (int, char, float и др.) в соответствующие им объекты.
Каждому из восьми примитивных типов соответствует свой обёрточный класс.
| Примитивный тип | Обёрточный класс |
|---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
Преобразование примитивных типов в объекты-обёртки
Для явного преобразования примитива в объект-обёртку используется метод valueOf().
Пример 1: от примитивов к обёрткам
class Main {
public static void main(String[] args) {
int a = 5;
double b = 5.65;
Integer aObj = Integer.valueOf(a);
Double bObj = Double.valueOf(b);
if (aObj instanceof Integer) {
System.out.println("Создан объект Integer.");
}
if (bObj instanceof Double) {
System.out.println("Создан объект Double.");
}
}
}
Вывод:
Создан объект Integer. Создан объект Double.
Код выше демонстрирует явное преобразование через valueOf(). Java также поддерживает автоупаковку (autoboxing), когда примитивы неявно оборачиваются в объекты:
int a = 5;
Integer aObj = a;
double b = 5.6;
Double bObj = b;
Подробнее об автоупаковке и автораспаковке читайте в отдельной статье.
Примечание: До Java 9 объекты-обёртки можно было создавать через конструкторы (например, new Integer(a)), но этот подход устарел и не рекомендуется.
Преобразование объектов-обёрток в примитивные типы
Чтобы получить базовое примитивное значение, вызовите соответствующий метод ...Value() на объекте-обёртке.
Пример 2: от обёрток к примитивам
class Main {
public static void main(String[] args) {
Integer aObj = Integer.valueOf(23);
Double bObj = Double.valueOf(5.55);
int a = aObj.intValue();
double b = bObj.doubleValue();
System.out.println("Значение a: " + a);
System.out.println("Значение b: " + b);
}
}
Вывод:
Значение a: 23 Значение b: 5.55
Java также выполняет автораспаковку (unboxing) автоматически:
Integer aObj = Integer.valueOf(2);
int a = aObj;
Double bObj = Double.valueOf(5.55);
double b = bObj;
См. статью автоупаковка и автораспаковка для глубокого погружения.
Преимущества обёрточных классов
- Когда коллекции требуют объекты, обёрточные классы связывают примитивы и объекты.
// ошибка ArrayList<int> list = new ArrayList<>(); // работает корректно ArrayList<Integer> list = new ArrayList<>(); - Объекты-обёртки могут хранить
null, что позволяет использовать нулевые ссылки.// ошибка int a = null; // работает корректно Integer a = null;
Примечание: Примитивные типы обычно эффективнее своих объектных аналогов; используйте примитивы, когда производительность критична.
java
- Ключевое слово final в Java: переменные, методы и классы
- Оператор instanceof в Java: полное руководство с примерами
- Статические вложенные классы в Java: использование, отличия и примеры
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Паттерн Singleton в Java: как реализовать и безопасно использовать
- Рефлексия в Java: инспекция классов, методов и полей во время выполнения
- Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
- Освоение Java Generics: создание переиспользуемого, типобезопасного кода
- Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление
- Понимание обёрточных классов Java: типы, преобразования и преимущества