logo

Java.lang.Number Třída v Javě

Většinu času při práci s čísly v jazyce Java používáme primitivní datové typy . Ale Java také poskytuje různé numerické obal podtřídy pod abstraktní třídou Číslo přítomné v java.lang balík. Tam jsou hlavně šest podtřídy pod třídou čísel. Tyto podtřídy definují některé užitečné metody, které se často používají při práci s čísly.
 

objekty-čísloHierarchie' title=


Tyto třídy 'zabalí' primitivní datový typ do odpovídajícího objektu. Zabalení často provádí kompilátor. Pokud použijete primitiva tam, kde se očekává objekt, kompilátor za vás primitivum zabalí do své obalové třídy. Podobně, pokud použijete objekt Number, když se očekává primitivum, kompilátor rozbalí objekt za vás. Toto se také nazývá Autoboxing a Unboxing.
Proč používat objekt třídy Number přes primitivní data?  
 



  • Konstanty definované třídou čísel, jako je MIN_VALUE a MAX_VALUE, které poskytují horní a dolní mez datového typu, jsou velmi užitečné.
  • Objekt třídy čísel lze použít jako argument metody, která očekává objekt (často se používá při manipulaci s kolekcemi čísel).
  • Metody tříd lze použít pro převod hodnot do az jiných primitivních typů pro převod do az řetězců a pro převod mezi číselnými soustavami (desítková osmičková hexadecimální binární soustava).


Metody společné pro všechny podtřídy Number:  
 

převést řetězec int java
    xxx xxxValue(): Zde xxx představuje primitivní číselné datové typy (byte short int long float double). Tato metoda se používá k převodu hodnoty tento Číslo objektu podle zadaného primitivního datového typu. 
     
  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);  } } 

výstup: 
 

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


Poznámka : Při převodu může dojít ke ztrátě přesnosti. Jak můžeme například vidět, část zlomku ('.9685') byla vynechána při převodu z objektu Double na datový typ int. 
 

    int CompareTo(NumberSubClass referenceName): Tato metoda se používá k porovnání tento Číslo objektu na zadaný argument. Nelze však porovnávat dva různé typy, takže argument i objekt Number, který metodu vyvolává, by měly být stejného typu. ReferenceName může být Byte Double Integer Float Long nebo 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.


 

řetězec jako pole
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));   } } 


výstup: 
 

1 -1 0


 

    boolean rovná se (objekt objektu): Tato metoda určuje, zda tento Objekt číslo se rovná argumentu. 
     
  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));  } } 


výstup: 
 

false false true


 

    int parseInt(String sint radix): Tato metoda se používá k získání primitivního datového typu a Řetězec . Radix se používá k vrácení desítkové (10), osmičkové (8) nebo šestnáctkové (16) atd. reprezentace jako výstup. 
     
  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);     } } 


výstup: 
 

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)


 

spojový seznam
    int parseInt(String s): Tato metoda je další variantou výše uvedené metody, kde je standardně radix 10 (desetinně). 
     
  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');    } } 


výstup: 
 

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(): Existují dvě varianty metody toString(). Používají se k získání řetězcové reprezentace čísla. Další varianty těchto metod jsou Integer.toBinaryString(int i) Integer.toHexString(int i) Integer.toOctalString(int i) který vrátí binární hexadecimální osmičkovou řetězcovou reprezentaci zadaného celého čísla (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));  } } 


výstup: 
 

12 12 10011000 98 230


 

    Integer valueOf(): Existují tři varianty metody valueOf(). Všechny tyto tři metody vracejí objekt typu Integer s hodnotou primitivního celého čísla. 
     
  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);   } } 


výstup: 
 

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)


 


Cvičná otázka:  
Jaký je výstup daného java kódu?  
 

kdy vyšel win 7
Java
public class Test {  public static void main(String[] args)  {  Integer i = Integer.parseInt('Kona' 27);  System.out.println(i);  } } 

Možnosti :  
 

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


odpověď:  
 

C) 411787


Vysvětlení:  
Protože radix je 27, povolené znaky v řetězcovém literálu jsou [0-9][A-Q] (pro 10 až 26). Jeho hodnota se tedy vypočítá následovně: 
=> 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
 

Vytvořit kvíz