Классы-обертки примитивных типов
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Значения примитивных типов не могут быть непосредственно использованы в контексте, где требуется ссылка. Ссылочное представление значений примитивных типов является основной задачей т.н. классов-оберток. Экземпляр такого класса хранит внутри значение примитивного типа и предоставляет доступ к этому значению. Для каждого примитивного типа Java существует свой класс-обертка. Такой класс является неизменяемым (т. е. для изменения значения необходимо создавать новый объект), к тому же имеет атрибут final – от него нельзя наследовать класс. Все классы-обертки (кроме Void) реализуют интерфейс Serializable, поэтому объекты любого (кроме Void) класса-обертки могут быть сериализованы.

Класс-обертка                                Примитивный тип

Boolean                                           boolean

Byte                                                 byte

Character                                         char

Double                                             double

Float                                                float

Integer                                             int

Long                                                long

Number

Short                                               short

Void

При этом классы обертки числовых типов - Byte, Short, Integer, Long, Float, Double наследуются от одного класса - Number. В нем содержится код, общий (часть реализована посредством абстрактных методов) для всех классов-оберток числовых типов.

Класс Void является исключением, так как в Java нет значений, которые можно было бы заключить в соответствующую «обертку», в составе класса нет методов, и он не позволяет создавать объекты. Он нужен только для получения ссылки на объект Class, соответствующий void. Эта ссылка представлена статической константой TYPE. В Java не поддерживается тип void – это служебное слово используется в конструкциях объявлений методов и свидетельствует об отсутствии возвращаемых значений. Класс Void применятся только в механизме рефлексии.

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

Integer iOb = new Integer(100);

Процесс извлечения значения из оболочки типа называется распаковкой (unboxing). В следующей строке кода значение из объекта iOb вручную распаковывается в переменную типа int:

int i = iOb.intValue();

В данном случае метод intValue() возвращает значение типа int из объекта iOb. Есть и другие методы, позволяющие извлечь из объекта значение другого числового типа, такого как byte, short, long, double или float. Например, для получения значения типа long из объекта iOb вам следует вызвать метод iOb.longValue(). Таким образом, можно распаковать значение в переменную простого типа, отличающегося от типа оболочки.

 

Наполнение классов-оберток

Константы типов
Integer.MAX_VALUE, Double.NaN

Конструкторы: принимающий в качестве параметра значение простого типа и создающий объект соответствующего класса-обертки
Float(float value)
преобразующий содержимое параметра типа String в исходное значение объекта (за исключением класса Character , в составе которого такого конструктора нет)
Float(String s)

Методы получения значения
public type typeValue () – возвращает значение простого типа type, соответствующее содержимому текущего объекта класса-оболочки
new Integer(6).intValue() вернет 6.

Методы преобразования типов
public static type parseType ( String str , int radix ) – преобразует строку str в числовое значение заданного типа type с учетом указанного основания системы счисления radix. Если содержимое str не поддается преобразованию, либо значение radix выходит за границы допустимого диапазона, выбрасывается исключение типа NumberFormatException.
Integer.parseInt("1010",2) вернет 10.
Integer.parseInt("10") вернет 10.

Методы проверки состояния и вида значения
public int compareTo ( Type other ) – возвращает значение меньшее (большее) нуля или равное нулю, если содержимое текущего объекта соответственно меньше (больше) значения other того же типа Type или равно ему. Метод не определен в классе Boolean.
new Integer(5).compareTo(4) вернет 1
public boolean isInfinite ( double val ) – возвращает true, если значение val  соответствует положительной или отрицательной бесконечности.
Double.isInfinite(5.6) вернет false

Специальные методы, обусловленные спецификой типа
public static String toHexString ( type val ) – возвращает строковое представление заданного значения в виде последовательности шестнадцатеричных цифр без знака.
Integer.toHexString(10) вернет строку «a».
















Класс Math

Предназначен для выполнения простых математических операций. Не имеет явного конструктора. Является final-классом. Все методы являются статическими. Не гарантирует повторяемости результатов (в отличие от класса StrictMath).

Наполнение класса Math

• Константы E и PI

• Функции взятия модуля abs()

• Функции максимума и минимума max (), min ()

• Функции округления round(), rint()

• Функции ближайшего целого ceil (), floor ()

• Тригонометрические функции sin (), cos (), tan (), asin (), acos (), atan ()

• Функции перевода toDegrees(), toRadians(), atan2()

• Функции степени pow (), exp (), log (), sqrt ()

• Случайное значение random ()

Дата: 2019-02-19, просмотров: 243.