logo

Classe Java.lang.Number a Java

La majoria de les vegades, mentre treballem amb números a Java, fem servir tipus de dades primitives . Però Java també proporciona diversos numèrics embolcall subclasses sota la classe abstracta Number present in java.lang paquet. N'hi ha principalment sis subclasses a la classe Number. Aquestes subclasses defineixen alguns mètodes útils que s'utilitzen amb freqüència quan es tracten números.
 

objectes-númeroJerarquia' title=


Aquestes classes "emboliquen" el tipus de dades primitiu en un objecte corresponent. Sovint, l'embolcall el fa el compilador. Si utilitzeu un primitiu on s'espera un objecte, el compilador enquadra el primitiu a la seva classe d'embolcall per a vosaltres. De la mateixa manera, si utilitzeu un objecte Number quan s'espera un primitiu, el compilador desemboixa l'objecte per vosaltres. Això també s'anomena Autoboxing i Unboxing.
Per què utilitzar un objecte de classe Number sobre dades primitives?  
 



  • Les constants definides per la classe numèrica com ara MIN_VALUE i MAX_VALUE que proporcionen els límits superior i inferior del tipus de dades són molt útils.
  • L'objecte de classe de números es pot utilitzar com a argument d'un mètode que espera un objecte (sovint s'utilitza quan es manipulen col·leccions de números).
  • Els mètodes de classe es poden utilitzar per convertir valors a i des d'altres tipus primitius per convertir a i des de cadenes i per convertir entre sistemes numèrics (binari hexadecimal octal decimal).


Mètodes comuns a totes les subclasses de Nombre:  
 

història en java
    xxx xxxValor(): Aquí xxx representen els tipus de dades de nombre primitius (byte short int long float double). Aquest mètode s'utilitza per convertir el valor de això Numereu l'objecte al tipus de dades primitiu especificat. 
     
  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);  } } 

Sortida: 
 

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


Nota : Tot i que la conversió es pot produir una possible pèrdua de precisió. Per exemple, com podem veure, la part de fracció ('.9685') s'ha deixat fora durant la conversió d'objecte Double a tipus de dades int. 
 

    int comparaTo(NombreReferènciaSubClassNom): Aquest mètode s'utilitza per comparar això Número d'objecte a l'argument especificat. No obstant això, no es poden comparar dos tipus diferents, de manera que tant l'argument com l'objecte Number que invoquen el mètode haurien de ser del mateix tipus. El referenceName podria ser un Byte Double Integer Float Long o 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.


 

pila java
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));   } } 


Sortida: 
 

1 -1 0


 

    booleà iguals (objecte objecte): Aquest mètode determina si això L'objecte Number és igual a l'argument. 
     
  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));  } } 


Sortida: 
 

false false true


 

    int parseInt(String sint radix): Aquest mètode s'utilitza per obtenir el tipus de dades primitiu de a Corda . Radix s'utilitza per retornar la representació decimal (10), octal (8) o hexadecimal (16), etc. com a sortida. 
     
  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);     } } 


Sortida: 
 

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)


 

topologies de xarxa
    int parseInt(String s): Aquest mètode és una altra variant del mètode anterior on per defecte el radix és 10 (decimal). 
     
  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');    } } 


Sortida: 
 

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(): Hi ha dues variants del mètode toString(). S'utilitzen per obtenir la representació de cadena d'un nombre. Les altres variants d'aquests mètodes són Integer.toBinaryString(int i) Integer.toHexString(int i) Integer.toOctalString(int i) que retornarà la representació de cadena octal hexadecimal binària de l'enter especificat (i) respectivament. 
     
  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));  } } 


Sortida: 
 

12 12 10011000 98 230


 

    Enter valueOf(): Hi ha tres variants del mètode valueOf(). Tots aquests tres mètodes retornen un objecte Integer que conté el valor d'un nombre enter primitiu. 
     
  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);   } } 


Sortida: 
 

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)


 


Pregunta pràctica:  
Quina és la sortida del codi java donat?  
 

amb forma completa
Java
public class Test {  public static void main(String[] args)  {  Integer i = Integer.parseInt('Kona' 27);  System.out.println(i);  } } 

Opcions:  
 

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


Resposta:  
 

C) 411787


Explicació:  
Com que el radix és 27, els caràcters permesos en un literal de cadena són [0-9][A-Q](de 10 a 26). Així que el seu valor es calcularà de la següent manera: 
=> 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
 

Crea un qüestionari