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.