logo

Java.lang.Number-klass i Java

För det mesta använder vi när vi arbetar med siffror i java primitiva datatyper . Men Java tillhandahåller också olika numeriska omslag underklasser under den abstrakta klassen Antal som finns i java.lang paket. Det finns främst sex underklasser under nummerklass. Dessa underklasser definierar några användbara metoder som används ofta när man hanterar siffror.
 

objekt-nummerHierarki' title=


Dessa klasser "lindar" den primitiva datatypen i ett motsvarande objekt. Ofta görs inpackningen av kompilatorn. Om du använder en primitiv där ett objekt förväntas boxas kompilatorn primitivet i sin omslagsklass åt dig. På samma sätt om du använder ett Number-objekt när en primitiv förväntas, packar kompilatorn upp objektet åt dig. Detta kallas också för Autoboxing och Unboxing.
Varför ska man använda ett nummerklassobjekt över primitiva data?  
 



  • Konstanter som definieras av talklassen som MIN_VALUE och MAX_VALUE som ger de övre och nedre gränserna för datatypen är mycket användbara.
  • Talklassobjekt kan användas som ett argument för en metod som förväntar sig ett objekt (används ofta när man manipulerar samlingar av tal).
  • Klassmetoder kan användas för att konvertera värden till och från andra primitiva typer för konvertering till och från strängar och för konvertering mellan talsystem (decimal oktal hexadecimal binär).


Metoder som är gemensamma för alla underklasser av Number:  
 

java8 funktioner
    xxx xxxValue(): Här representerar xxx primitiva datatyper (byte kort int lång flytande dubbel). Denna metod används för att konvertera värdet på detta Nummerobjekt till den angivna primitiva datatypen. 
     
  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);  } } 

Produktion: 
 

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


Notera : Vid konvertering kan eventuell förlust av precision inträffa. Till exempel som vi kan se att bråkdel('.9685') har utelämnats vid konvertering från dubbelobjekt till int-datatyp. 
 

    int compareTo(NumberSubClass referenceName): Denna metod används för att jämföra detta Nummerobjekt till det angivna argumentet. Två olika typer kan dock inte jämföras så både argumentet och Number-objektet som anropar metoden bör vara av samma typ. Referensnamnet kan vara ett byte Double Heltal Float Long eller 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.


 

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


Produktion: 
 

1 -1 0


 

    boolesk lika med(Objekt obj): Denna metod avgör om detta Nummerobjekt är lika med argumentet. 
     
  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));  } } 


Produktion: 
 

false false true


 

java array
    int parseInt(String sint radix): Denna metod används för att få den primitiva datatypen av en Sträng . Radix används för att returnera decimal(10) oktal(8) eller hexadecimal(16) etc representation som utdata. 
     
  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);     } } 


Produktion: 
 

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)


 

lexikografisk ordning
    int parseInt(String s): Denna metod är en annan variant av ovanstående metod där radix som standard är 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');    } } 


Produktion: 
 

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(): Det finns två varianter av metoden toString(). De används för att få strängrepresentation av ett tal. De andra varianterna av dessa metoder är Integer.toBinaryString(int i) Integer.toHexString(int i) Integer.toOctalString(int i) vilket kommer att returnera binär hexadecimal oktal strängrepresentation av respektive heltal(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));  } } 


Produktion: 
 

12 12 10011000 98 230


 

    HeltalsvärdeOf(): Det finns tre varianter av metoden valueOf(). Alla dessa tre metoder returnerar ett heltalsobjekt med värdet av ett primitivt heltal. 
     
  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);   } } 


Produktion: 
 

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)


 


Övningsfråga:  
Vad är resultatet av den givna Java-koden?  
 

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

Alternativ:  
 

base64 avkoda i js
A) NumberFormatException at run-time B) NumberFormatException at compile-time C) 411787


Svar:  
 

C) 411787


Förklaring:  
Eftersom radix är 27 så är tillåtna tecken i en strängliteral [0-9][A-Q](för 10 till 26). Så dess värde kommer att beräknas enligt följande: 
=> 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
 

Skapa frågesport