1. Обзор
В этом уроке мы обсудим Java Number c lass. Во-первых, мы узнаем | что делает класс Number и какие методы он содержит . Затем мы погрузимся в различные реализации этого абстрактного класса.
2. Класс чисел
Number – это класс bstract в пакете java.lang . Различные подклассы расширяют класс Number . Наиболее часто используемые:
- Байт
- Короткий
- Целое число
- Длинный
- Двойной
- Поплавок
Основная цель этого класса-предоставить методы для преобразования рассматриваемого числового значения в различные примитивные типы, такие как byte , short , int , long , double и float .
Для выполнения этой задачи доступны четыре абстрактных метода:
- intValue()
- Длинное значение()
- Двойное значение()
- floatValue()
Number также имеет два конкретных метода, byteValue() и shortValue() , которые будут возвращать байтовое значение и короткое значение указанного числа соответственно. Чтобы узнать больше о различных реализациях класса Number , пожалуйста, обратитесь к нашей статье о классах-оболочках .
В следующих разделах мы узнаем больше об этих методах и их использовании.
3. Конкретные Методы
Давайте обсудим конкретные методы один за другим.
3.1. Короткое значение()
Как следует из названия, этот метод преобразует указанный объект Number в примитив short value .
Реализация по умолчанию преобразует значение int в short и возвращает его. Однако подклассы имеют свои собственные реализации, и они приводят соответствующие значения в short , а затем возвращаются.
Вот как значение Double преобразуется в тип short primitive:
@Test public void givenDoubleValue_whenShortValueUsed_thenShortValueReturned() { Double doubleValue = Double.valueOf(9999.999); assertEquals(9999, doubleValue.shortValue()); }
3.2. Значение byteValue()
Этот метод возвращает значение указанного Числа объекта в виде байта значения . Тем не менее, дочерние классы класса Number имеют свои собственные реализации.
Вот как значение Float может быть преобразовано в значение byte :
@Test public void givenFloatValue_whenByteValueUsed_thenByteValueReturned() { Float floatValue = Float.valueOf(101.99F); assertEquals(101, floatValue.byteValue()); }
4. Абстрактные методы
Кроме того, класс Number также имеет несколько абстрактных методов и несколько подклассов, которые их реализуют.
В этом разделе давайте кратко рассмотрим, как используются эти методы.
4.1. Значение()
Этот метод возвращает int представление Номер в контексте.
Давайте посмотрим, как значение Long можно изменить на int :
@Test public void givenLongValue_whenInitValueUsed_thenInitValueReturned() { Long longValue = Long.valueOf(1000L); assertEquals(1000, longValue.intValue()); }
Конечно, компилятор выполняет сужение операция здесь путем преобразования длинный значение в int .
4.2. Длинное значение()
Этот метод вернет значение N умбра указано в качестве длинный .
В этом примере мы видим, как значение Integer преобразуется в long с помощью класса Integer :
@Test public void givenIntegerValue_whenLongValueUsed_thenLongValueReturned() { Integer integerValue = Integer.valueOf(100); assertEquals(100, integerValue.longValue()); }
В отличие от intValue() метод, Длинное значение() возвращает длинный значение после a расширение примитивное преобразование.
4.3. Плавающее значение()
Мы можем использовать этот метод, чтобы вернуть значение указанного N umber в виде float. Давайте посмотрим, как значение Short может быть преобразовано в значение float :
@Test public void givenShortValue_whenFloatValueUsed_thenFloatValueReturned() { Short shortValue = Short.valueOf(127); assertEquals(127.0F, shortValue.floatValue(), 0); }
Также, Длинное значение() и floatValue() также выполните расширяющее преобразование примитивов.
4.4. Двойное значение()
Наконец, этот метод преобразует значение данного класса Number в примитивный тип данных double и возвращает его.
Вот пример использования этого метода для преобразования Byte в double :
@Test public void givenByteValue_whenDoubleValueUsed_thenDoubleValueReturned() { Byte byteValue = Byte.valueOf(120); assertEquals(120.0, byteValue.doubleValue(), 0); }
5. Заключение
В этом кратком руководстве мы рассмотрели некоторые из наиболее важных методов в классе Number /.
Наконец, мы продемонстрировали, как эти методы могут использоваться в различных классах-оболочках .
Как всегда, полный исходный код статьи доступен на GitHub .