Оболочки числовых типов

До сих пор наиболее часто используемые оболочки типов — это те, что представляют числовые значения. Это Byte, Short, Integer, Long, Float и Double. Все оболочки числовых типов наследуют абстрактный тип Number. Number объявляет методы, которые возвращают значение объекта в каждом из различных числовых форматов. Вот эти методы:

byte byteValueO
double doubleValueO
float floatValueO
int intValueO
long longValueO
short shortValueO

Например, doubleValue () возвращает значение объекта как double, floatValue () возвращает значение как float и так далее. Эти методы реализованы каждой из оболочек числовых типов.

Все числовые оболочки типов определяют конструкторы, которые позволяют конструировать объекты из заданного значения или строкового представления этого значения. Например, вот как выглядят конструкторы для Integer:

Integer(int num) Integer(String str)

Если str не содержит числового значения, то бросается исключение NumberFormat-Exception.

Все типы-оболочки переопределяют toString(). Этот метод возвращает читабельную для человека форму значения, содержащегося в оболочке. Это позволяет выводить значение, передавая объект оболочки типа методу println (), например, без необходимости преобразования его в примитивный тип. В следующей программе показано, как использовать оболочку числового типа для инкапсуляции значения и последующего его извлечения.

// Демонстрация оболочки типа.
class Wrap {
public static void main(String args[]) {
Integer iOb = new Integer(100) ;
int i = iOb.intValue();
System.out.println(i + " " + iOb); // отображает 100 100
}
}

Эта программа помещает целое значение 100 внутрь объекта Integer по имени iOb. Эта программа затем получает значение вызовом intValue () и помещает результат в i.

Процесс инкапсуляции значения в объект называется упаковкой (boxing). То есть следующая строка программы упаковывает значение 100 в Integer:

Integer iOb = new Integer(100) ;

Процесс извлечения значения из оболочки типа называется распаковкой (unboxing). Например, приведенная строка программы распаковывает значение iOb:

int i = iOb. intValue () ;

Та же самая общая процедура, что используется в предыдущей программе для упаковки и распаковки значений, применялась и в исходной версии Java. Однако в версию Java J2SE 5 были внесены фундаментальные усовершенствования за счет добавления автоматической упаковки, описанной ниже.