English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массивы

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Queue (очередь)

Java Map коллекции

Java Set коллекции

Java Ввод/Вывод (I/O)

Java Reader/Writer

Другие темы Java

Java оберточные классы (Wrapper)

В этом руководстве мы с помощью примеров будем изучать обертные классы Java (Wrapper).

Обертные классы в Java используются для преобразования базовых типов (int, char, float и т.д.) в соответствующие объекты.

Каждый из 8 базовых типов имеет соответствующий класс обертки.

Базовые типыОбертные классы
byteByte
booleanBoolean
charCharacter
doubleDouble
floatFloat
intInteger
longLong
shortShort

Преобразование базового типа в объект обертки

Мы также можем использовать метод 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() для преобразования базового типа в объект.

Здесь мы используем оператор instanceof для проверки того, принадлежит ли созданный объект типу Integer или Double.

Но компилятор Java может напрямую преобразовать базовый тип в соответствующий объект. Например,

int a = 5;
// Преобразование в объект
Integer aObj = a;
double b = 5.6;
// Преобразование в объект
Double bObj = b;

Этот процесс называетсяАвтоматическая обертка. Для получения дополнительной информации посетитеJava автоматическая装箱ка и распаковка.

ВниманиеМы также можем использовать конструктор обертки (Wrapper) для преобразования базового типа в обертку.Но с Java 9 и выше не используется конструктор.

Обертка в базовый тип

Чтобы преобразовать объект в базовый тип, мы можем использовать соответствующие методы значений в каждом обертывающем классе (intValue(), doubleValue() и т.д.).

Пример 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

В примере выше мы использовали методы 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;

ВниманиеБазовые типы эффективнее соответствующих объектов. Поэтому, когда нужна эффективность, всегда рекомендуется использовать базовые типы.