logo

Java.lang.Number Клас в Java

През повечето време, докато работим с числа в java, ние използваме примитивни типове данни . Но Java предоставя и различни числови стойности обвивка подкласове под абстрактния клас Number присъства в java.lang пакет. Има основно шест под-класове под Number class. Тези под-класове дефинират някои полезни методи, които се използват често при работа с числа.
 

обекти-номерЙерархия' title=


Тези класове „опаковат“ примитивния тип данни в съответен обект. Често обвиването се извършва от компилатора. Ако използвате примитив, където се очаква обект, компилаторът поставя примитивния елемент в неговия клас обвивка вместо вас. По подобен начин, ако използвате обект Number, когато се очаква примитив, компилаторът разопакова обекта вместо вас. Това също се нарича Autoboxing и Unboxing.
Защо да използваме обект от клас Number над примитивни данни?  
 



  • Константите, дефинирани от числовия клас, като MIN_VALUE и MAX_VALUE, които предоставят горната и долната граница на типа данни, са много полезни.
  • Обектът на числовия клас може да се използва като аргумент на метод, който очаква обект (често се използва при манипулиране на колекции от числа).
  • Методите на класа могат да се използват за преобразуване на стойности към и от други примитивни типове за преобразуване към и от низове и за преобразуване между бройни системи (десетична осмична шестнадесетична двоична).


Методи, общи за всички подкласове на Number:  
 

кортеж за сортиране на python
    xxx xxxValue(): Тук xxx представлява примитивни числови типове данни (byte short int long float double). Този метод се използва за преобразуване на стойността на това Числов обект към посочения примитивен тип данни. 
     
  Syntax :    byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue()   Parameters :    ----   Returns :   the numeric value represented by this object after conversion to specified type


 

Java
//Java program to demonstrate xxxValue() method public class Test {  public static void main(String[] args)   {  // Creating a Double Class object with value '6.9685'  Double d = new Double('6.9685');    // Converting this Double(Number) object to   // different primitive data types  byte b = d.byteValue();   short s = d.shortValue();   int i = d.intValue();   long l = d.longValue();   float f = d.floatValue();   double d1 = d.doubleValue();     System.out.println('value of d after converting it to byte : ' + b);  System.out.println('value of d after converting it to short : ' + s);  System.out.println('value of d after converting it to int : ' + i);  System.out.println('value of d after converting it to long : ' + l);  System.out.println('value of d after converting it to float : ' + f);  System.out.println('value of d after converting it to double : ' + d1);  } } 

Изход: 
 

value of d after converting it to byte : 6 value of d after converting it to short : 6 value of d after converting it to int : 6 value of d after converting it to long : 6 value of d after converting it to float : 6.9685 value of d after converting it to double : 6.9685


Забележка : По време на конвертирането може да възникне възможна загуба на точност. Например, както можем да видим, че fraction part('.9685') е пропусната при преобразуването от Double обект към int тип данни. 
 

    int compareTo(NumberSubClass referenceName): Този метод се използва за сравнение това Числов обект към посочения аргумент. Два различни типа обаче не могат да се сравняват, така че и аргументът, и обектът Number, които извикват метода, трябва да са от един и същи тип. ReferenceName може да бъде Byte Double Integer Float Long или Short. 
     
  Syntax :    public int compareTo( NumberSubClass referenceName )   Parameters :    referenceName - any NumberSubClass type value   Returns :   the value 0 if the Number is equal to the argument. the value 1 if the Number is less than the argument. the value -1 if the Number is greater than the argument.


 

excel премахнете първия знак
Java
//Java program to demonstrate compareTo() method public class Test {  public static void main(String[] args)   {  // creating an Integer Class object with value '10'  Integer i = new Integer('10');    // comparing value of i  System.out.println(i.compareTo(7));   System.out.println(i.compareTo(11));   System.out.println(i.compareTo(10));   } } 


Изход: 
 

1 -1 0


 

    булево равно (Object obj): Този метод определя дали това Числовият обект е равен на аргумента. 
     
  Syntax :    public boolean equals(Object obj)   Parameters :    obj - any object   Returns :   The method returns true if the argument is not null and is an object of the same type and with the same numeric value otherwise false.


 

Java
//Java program to demonstrate equals() method public class Test {  public static void main(String[] args)  {  // creating a Short Class object with value '15'  Short s = new Short('15');    // creating a Short Class object with value '10'  Short x = 10;    // creating an Integer Class object with value '15'  Integer y = 15;    // creating another Short Class object with value '15'  Short z = 15;    //comparing s with other objects  System.out.println(s.equals(x));  System.out.println(s.equals(y));  System.out.println(s.equals(z));  } } 


Изход: 
 

false false true


 

    int parseInt (String sint radix): Този метод се използва за получаване на примитивен тип данни на a низ . Radix се използва за връщане на decimal(10), octal(8) или hexadecimal(16) и т.н. представяне като изход. 
     
  Syntax :    static int parseInt(String s int radix)   Parameters :    s - any String representation of decimal radix - any radix value   Returns :   the integer value represented by the argument in decimal.   Throws :   NumberFormatException : if the string does not contain a parsable integer.


 

Java
//Java program to demonstrate Integer.parseInt() method public class Test {  public static void main(String[] args)  {  // parsing different strings  int z = Integer.parseInt('654'8);   int a = Integer.parseInt('-FF' 16);  long l = Long.parseLong('2158611234'10);     System.out.println(z);  System.out.println(a);  System.out.println(l);    // run-time NumberFormatException will occur here  // 'Geeks' is not a parsable string  int x = Integer.parseInt('Geeks'8);     // run-time NumberFormatException will occur here  // (for octal(8)allowed digits are [0-7])  int y = Integer.parseInt('99'8);     } } 


Изход: 
 

428 -255 2158611234 Exception in thread 'main' java.lang.NumberFormatException: For input string: 'Geeks' at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at Test.main(Test.java:17)


 

git добави всички
    int parseInt (низ s): Този метод е друг вариант на горния метод, където по подразбиране радиксът е 10 (десетичен). 
     
  Syntax :    static int parseInt(String s)   Parameters :    s - any String representation of decimal   Returns :   the integer value represented by the argument in decimal.   Throws :   NumberFormatException : if the string does not contain a parsable integer.


 

Java
//Java program to demonstrate Integer.parseInt() method public class Test {  public static void main(String[] args)   {  // parsing different strings  int z = Integer.parseInt('654');   long l = Long.parseLong('2158611234');     System.out.println(z);  System.out.println(l);    // run-time NumberFormatException will occur here  // 'Geeks' is not a parsable string  int x = Integer.parseInt('Geeks');     // run-time NumberFormatException will occur here  // (for decimal(10)allowed digits are [0-9])  int a = Integer.parseInt('-FF');    } } 


Изход: 
 

654 2158611234 Exception in thread 'main' java.lang.NumberFormatException: For input string: 'Geeks' at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at Test.main(Test.java:15)


 

    String toString(): Има два варианта на метода toString(). Те се използват за получаване на низово представяне на число. Другите варианти на тези методи са Integer.toBinaryString(int i) Integer.toHexString(int i) Integer.toOctalString(int i) което ще върне двоично шестнадесетично осмично представяне на низ на определено цяло число(i) съответно. 
     
  Syntax :    String toString() String toString(int i)   Parameters :    String toString() - no parameter String toString(int i) - i: any integer value   Returns :   String toString() - returns a String object representing the value of the Number object on which it is invoked. String toString(int i) - returns a decimal String object representing the specified integer(i)
Java
//Java program to demonstrate Integer.toString()  //and Integer.toString(int i) method public class Test {  public static void main(String[] args)  {  // demonstrating toString() method  Integer x = 12;    System.out.println(x.toString());     // demonstrating toString(int i) method  System.out.println(Integer.toString(12));    System.out.println(Integer.toBinaryString(152));  System.out.println(Integer.toHexString(152));   System.out.println(Integer.toOctalString(152));  } } 


Изход: 
 

12 12 10011000 98 230


 

    Цяло число valueOf(): Има три варианта на метода valueOf(). Всички тези три метода връщат обект Integer, съдържащ стойността на примитивно цяло число. 
     
  Syntax :    Integer valueOf(int i) Integer valueOf(String s) Integer valueOf(String s int radix)   Parameters :    i - any integer value s - any String representation of decimal radix - any radix value   Returns :   valueOf(int i) : an Integer object holding the valuerepresented by the int argument. valueOf(String s) : an Integer object holding value represented by the string argument. valueOf(String s int radix) : an Integer object holding the value represented by the string argument with base radix.   Throws :   valueOf(String s) - NumberFormatException : if the string does not contain a parsable integer. valueOf(String s int radix) - NumberFormatException : if the string does not contain a parsable integer.


 

Java
// Java program to demonstrate valueOf() method public class Test {  public static void main(String[] args)  {  // demonstrating valueOf(int i) method  System.out.println('Demonstrating valueOf(int i) method');  Integer i =Integer.valueOf(50);   Double d = Double.valueOf(9.36);   System.out.println(i);  System.out.println(d);    // demonstrating valueOf(String s) method  System.out.println('Demonstrating valueOf(String s) method');  Integer n = Integer.valueOf('333');   Integer m = Integer.valueOf('-255');   System.out.println(n);  System.out.println(m);    // demonstrating valueOf(String sint radix) method  System.out.println('Demonstrating (String sint radix) method');  Integer y = Integer.valueOf('333'8);   Integer x = Integer.valueOf('-255'16);   Long l = Long.valueOf('51688245'16);   System.out.println(y);  System.out.println(x);  System.out.println(l);    // run-time NumberFormatException will occur in below cases  Integer a = Integer.valueOf('Geeks');  Integer b = Integer.valueOf('Geeks'16);   } } 


Изход: 
 

Demonstrating valueOf(int i) method 50 9.36 Demonstrating valueOf(String s) method 333 -255 Demonstrating (String sint radix) method 219 -597 1365803589 Exception in thread 'main' java.lang.NumberFormatException: For input string: 'Geeks' at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.valueOf(Integer.java:766) at Test.main(Test.java:28)


 


Практически въпрос:  
Какъв е резултатът от дадения java код?  
 

операционна система linux
Java
public class Test {  public static void main(String[] args)  {  Integer i = Integer.parseInt('Kona' 27);  System.out.println(i);  } } 

Опции:  
 

A) NumberFormatException at run-time B) NumberFormatException at compile-time C) 411787


Отговор:  
 

C) 411787


Обяснение:  
Тъй като основата е 27, така разрешените символи в String литерал са [0-9][A-Q](за 10 до 26). Така че неговата стойност ще се изчисли, както следва: 
=> a*(27^0) + n*(27^1) + o*(27^2) + k*(27^3) 
=> 10*1 + 23*27 + 24*27*27 + 20*27*27*27 
=> 10 + 621 + 17496 + 393660 
=> 411787
 

Създаване на тест