Перейти к основному содержимому

Руководство по числовому классу в Java

· 3 мин. чтения

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

1. Обзор

В этом уроке мы обсудим класс Java Java . Сначала мы узнаем , что делает класс Number и какие методы он содержит . Затем мы углубимся в различные реализации этого абстрактного класса.

2. Числовой класс

Number — это абстрактный класс в пакете java.lang . Различные подклассы расширяют класс Number . Наиболее часто используются:

  • Байт
  • короткий
  • Целое число
  • Длинная
  • Двойной
  • Плавать

Основная цель этого класса — предоставить методы для преобразования рассматриваемого числового значения в различные примитивные типы, такие как byte , short , int , long , double и float .

Для выполнения этой задачи доступны четыре абстрактных метода:

  • intValue()
  • длинное значение()
  • двойное значение()
  • плавающее значение ()

Number также имеет два конкретных метода, byteValue() и shortValue() , которые будут возвращать значение байта и короткое значение указанного числа соответственно. Чтобы узнать больше о различных реализациях класса Number , обратитесь к нашей статье о классах -оболочках .

В следующих разделах мы узнаем больше об этих методах и их использовании.

3. Конкретные методы

Давайте обсудим конкретные методы один за другим.

3.1. короткое значение ()

Как следует из названия, этот метод преобразует указанный объект Number в примитивное короткое значение .

Реализация по умолчанию преобразует значение int в тип short и возвращает его. Однако у подклассов есть свои собственные реализации, и они преобразуют соответствующие значения в короткие , а затем возвращаются.

Вот как значение Double преобразуется в короткий примитивный тип:

@Test
public void givenDoubleValue_whenShortValueUsed_thenShortValueReturned() {
Double doubleValue = Double.valueOf(9999.999);
assertEquals(9999, doubleValue.shortValue());
}

3.2. байтовое значение()

Этот метод возвращает значение указанного объекта Number в виде значения байта . Тем не менее, дочерние классы класса Number имеют свои реализации.

Вот как значение с плавающей запятой может быть преобразовано в значение байта :

@Test
public void givenFloatValue_whenByteValueUsed_thenByteValueReturned() {
Float floatValue = Float.valueOf(101.99F);
assertEquals(101, floatValue.byteValue());
}

4. Абстрактные методы

Кроме того, класс Number также имеет несколько абстрактных методов и несколько подклассов, которые их реализуют.

В этом разделе давайте кратко рассмотрим, как используются эти методы.

4.1. intValue()

Этот метод возвращает целочисленное представление числа в контексте.

Давайте посмотрим, как значение Long можно изменить на int :

@Test
public void givenLongValue_whenInitValueUsed_thenInitValueReturned() {
Long longValue = Long.valueOf(1000L);
assertEquals(1000, longValue.intValue());
}

Конечно, здесь компилятор выполняет операцию сужения , преобразовывая длинное значение в целое .

4.2. длинное значение()

Этот метод вернет значение числа, указанного как long .

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

@Test
public void givenIntegerValue_whenLongValueUsed_thenLongValueReturned() {
Integer integerValue = Integer.valueOf(100);
assertEquals(100, integerValue.longValue());
}

В отличие от метода intValue() , longValue() возвращает длинное значение после расширяющего примитивного преобразования.

4.3. плавающее значение ()

Мы можем использовать этот метод, чтобы вернуть значение указанного числа в виде числа с плавающей запятой. Давайте посмотрим, как значение Short может быть преобразовано в значение с плавающей запятой :

@Test
public void givenShortValue_whenFloatValueUsed_thenFloatValueReturned() {
Short shortValue = Short.valueOf(127);
assertEquals(127.0F, shortValue.floatValue(), 0);
}

Аналогично, longValue() и 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 .

Наконец, мы продемонстрировали, как эти методы можно использовать в различных классах Wrapper .

Как всегда, полный исходный код статьи доступен на GitHub .