Классы-оболочки

Содержание

Слайд 2

Классы оболочки (Wrapper classes) Каждый примитивный тип имеет соответствующий ему класс

Классы оболочки (Wrapper classes)
Каждый примитивный тип имеет соответствующий ему класс оболочку.
byte

==> Byte float ==> Float
short ==> Short double ==> Double
int ==> Integer boolean ==> Boolean
long ==> Long
char ==> Character void ==> Void
Модификатору void, который предназначен для того, чтобы показать, что метод не возвращает значения, поставлен в соответствие класс Void.

Kolesnikov D.O. SED KNURE

Слайд 3

Иерархия классов оболочек Классы Void, Boolean и Character наследуются напрямую от

Иерархия классов оболочек
Классы Void, Boolean и Character наследуются напрямую от Object.

Остальные - расширяют java.lang.Number.

Kolesnikov D.O. SED KNURE

Слайд 4

Autoboxing Если в операции должен участвовать объект, а участвует примитив, то

Autoboxing
Если в операции должен участвовать объект, а участвует примитив, то этот

примитив автоматически оборачивается в объектную оболочку.
Integer x = 7; ? Integer x = Integer.valueOf(7)
Boolean b = true ? Boolean b = Boolean.valueOf(true);

Kolesnikov D.O. SED KNURE

Слайд 5

Unboxing Если в операции должен участвовать примитив, то можно подставить туда

Unboxing
Если в операции должен участвовать примитив, то можно подставить туда объектную

оболочку. Значение будет автоматически из нее развернуто.
Integer x = new Integer(7);
int y = x + 2;
?
int y = x.intValue() + 2;
Boolean bool = new Boolean(true);
boolean f = !bool ^ false;
?
boolean f = !bool.booleanValue() ^ false;

Kolesnikov D.O. SED KNURE

Слайд 6

Замечание. В версиях Java до 5.0 autoboxing и unboxing для классов

Замечание. В версиях Java до 5.0 autoboxing и unboxing для классов

оболочек отсутствовали.
Начиная с 5.0 класс Boolean реализует интерфейс Comparable (true > false).
Boolean f1 = true;
Boolean f2 = false;
int x = f1.compareTo(f2)); // x = 1

Kolesnikov D.O. SED KNURE

Слайд 7

Инициализация объектов классов оболочек 1) Для любого примитивного типа prime соответствующий

Инициализация объектов классов оболочек
1) Для любого примитивного типа prime соответствующий класс

оболочка PrimeWrapper содержит конструктор вида
public PrimeWrapper(prime primeValue)
2) Классы оболочки для всех примитивных типов за исключением char и void содержат конструктор вида
public PrimeWrapper(String primeValueAsString)
throws NumberFormatException
3) Создание объектов классов оболочек происходит при autobox преобразованиях (но не всегда).

Kolesnikov D.O. SED KNURE

Слайд 8

Преобразование строки в число Классы оболочки для числовых примитивных типов (byte,

Преобразование строки в число
Классы оболочки для числовых примитивных типов
(byte, short, int,

long, float, double)
содержат статический метод parseXxx, который конвертирует строку в число соответствующего примитивного типа.
public static byte parseByte(String s)
...
public static double parseDouble(String s)
Если строка не содержит запись числа, то генерируется исключение java.lang.NumberFormatException.

Kolesnikov D.O. SED KNURE

Слайд 9

Замечание. В целочисленных классах оболочках (Byte, Short, Int, Long) метод parseXxx

Замечание. В целочисленных классах оболочках
(Byte, Short, Int, Long)
метод parseXxx перегружен для

случая, когда в строке целое число записано в определенной системе счисления, при этом основание системы указывается вторым параметром.
public static long parseLong(String s, int radix)

Kolesnikov D.O. SED KNURE

Слайд 10

Замечание. Для записи цифр в системах счисления, основание которых больше 10,

Замечание. Для записи цифр в системах счисления, основание которых больше 10,

используют десятичные цифры и 26 букв латинского алфавита игнорируя регистр.
Максимальное значение основания системы счисления записано в статическом поле MAX_RADIX класса оболочки Character.
(для JDK 1.4/5/6 Character.MAX_RADIX = 36)

Kolesnikov D.O. SED KNURE

Слайд 11

Метод valueOf классов оболочек Числовые классы оболочки (Byte, Short, Integer, Long,

Метод valueOf классов оболочек
Числовые классы оболочки
(Byte, Short, Integer, Long, Float, Double)
содержат

статический метод valueOf, который принимает строку в качестве параметра, конвертирует ее в соответствующее примитивное значение и возвращает оболочку.
Метод выбрасывает исключение java.lang.NumberFormatException если преобразование из строки в соответствующий тип невозможно.
public static Float valueOf(String s)
throws NumberFormatException

Kolesnikov D.O. SED KNURE