English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы с помощью примеров будем изучать обертные классы Java (Wrapper).
Обертные классы в Java используются для преобразования базовых типов (int, char, float и т.д.) в соответствующие объекты.
Каждый из 8 базовых типов имеет соответствующий класс обертки.
Базовые типы | Обертные классы |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
Мы также можем использовать метод valueOf() для преобразования базового типа в соответствующий объект.
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() для преобразования базового типа в объект.
Здесь мы используем оператор instanceof для проверки того, принадлежит ли созданный объект типу Integer или Double.
Но компилятор Java может напрямую преобразовать базовый тип в соответствующий объект. Например,
int a = 5; // Преобразование в объект Integer aObj = a; double b = 5.6; // Преобразование в объект Double bObj = b;
Этот процесс называетсяАвтоматическая обертка. Для получения дополнительной информации посетитеJava автоматическая装箱ка и распаковка.
ВниманиеМы также можем использовать конструктор обертки (Wrapper) для преобразования базового типа в обертку.Но с Java 9 и выше не используется конструктор.
Чтобы преобразовать объект в базовый тип, мы можем использовать соответствующие методы значений в каждом обертывающем классе (intValue(), doubleValue() и т.д.).
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
В примере выше мы использовали методы intValue() и doubleValue() для преобразования объектов Integer и Double в соответствующие базовые типы.
Но компилятор Java может автоматически преобразовать объект в соответствующий базовый тип. Например,
Integer aObj = Integer.valueOf(2); // Преобразование в тип int int a = aObj; Double bObj = Double.valueOf(5.55); // Преобразование в тип double double b = bObj;
Этот процесс называетсяРаспаковка. Для получения дополнительной информации посетитеJava автоматическая装箱ка и распаковка.
Иногда в Java мы можем нуждаться в использовании объектов вместо базовых типов данных. Например, при использовании коллекций.
// Ошибка ArrayList<int> list = new ArrayList<>(); // Normal operation ArrayList<Integer> list = new ArrayList<>();
В этом случае, оберточные классы могут помочь нам использовать базовые типы данных в качестве объектов.
Мы можем хранить пустые значения в оберточных объектах. Например,
// Ошибка генерируется int a = null; // Normal operation Integer a = null;
ВниманиеБазовые типы эффективнее соответствующих объектов. Поэтому, когда нужна эффективность, всегда рекомендуется использовать базовые типы.