Ръководство за числовия клас в Java

1. Общ преглед

В този урок ще обсъдим Java c Number c lass. Първо ще научим какво прави класът Number и какви методи съдържа . След това ще се потопим в различните реализации на този абстрактен клас.

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

Number е абстрактен клас в пакета java.lang . Различни подкласове разширяват класа Number . Най-често използваните са:

  • Байт
  • Къс
  • Цяло число
  • Дълго
  • Двойна
  • Плувка

Основната цел на този клас е да осигури методи за преобразуване на въпросната числова стойност в различни примитивни типове като байт , къс , int , дълъг , двоен и плаващ .

Четири абстрактни метода са на разположение за изпълнение на задачата:

  • intValue ()
  • longValue ()
  • doubleValue ()
  • floatValue ()

Number също има два конкретни метода, byteValue () и shortValue () , които ще върнат съответно байтовата стойност и късата стойност на определен номер. За да научите повече за различните изпълнения накласа Number , моля, вижте нашата статия за Wrapper Classes.

В предстоящите раздели ще научим повече за тези методи и тяхното използване.

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

Нека обсъдим конкретните методи един по един.

3.1. shortValue ()

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

Изпълнението по подразбиране прехвърля стойността int на къса и я връща. Подкласовете обаче имат свои собствени внедрения и те хвърлят съответните стойности на кратко и след това връщат.

Ето как двойната стойност се преобразува в кратък примитивен тип:

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

3.2. byteValue ()

Този метод връща стойността на посочения обект Number като байтова стойност . Независимо от това, подчинените класове от класа Number имат свои собствени реализации.

Ето как Float стойност може да бъде преобразувана в байтова стойност:

@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()); }

Разбира се, компилаторът извършва тук операция на стесняване чрез преобразуване на дълга стойност в int .

4.2. longValue ()

Този метод ще върне стойността на N umber, посочена като long .

В този пример виждаме как Integer стойност се преобразува в long чрез клас Integer :

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

За разлика от метода intValue () , longValue () връща long стойността след разширяване на примитивното преобразуване.

4.3. floatValue ()

Можем да използваме този метод, за да върнем стойността на посочения N umber като плувка. Нека да разгледаме как кратка стойност може да бъде преобразувана в плаваща стойност:

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

По същия начин longValue () и floatValue () също изпълняват разширяващо се примитивно преобразуване.

4.4. doubleValue ()

И накрая, този метод преобразува стойността на дадения клас Number в двойния примитивен тип данни и го връща.

Ето пример за използване на този метод за преобразуване на байт в удвояване :

@Test public void givenByteValue_whenDoubleValueUsed_thenDoubleValueReturned() { Byte byteValue = Byte.valueOf(120); assertEquals(120.0, byteValue.doubleValue(), 0); }

5. Заключение

В този бърз урок разгледахме някои от най-важните методи в класа Number .

И накрая, демонстрирахме как тези методи могат да се използват в различни класове Wrapper .

Както винаги, пълният изходен код на статията е достъпен в GitHub.