Java.lang.Number Class Java

Java.lang.Number Class Java

Dirbdami su skaičiais Java dažniausiai naudojame primityvūs duomenų tipai . Tačiau „Java“ taip pat suteikia įvairių skaičių įvynioklis subklasės pagal abstrakčią klasę Numeris, esantis java.lang paketą. Daugiausia yra šeši poklasės, esančios Skaičių klasėje. Šie poklasiai apibrėžia kai kuriuos naudingus metodus, kurie dažnai naudojami dirbant su skaičiais.
 

objektų-numerių hierarchija


Šios klasės „apvynioja“ primityvų duomenų tipą į atitinkamą objektą. Dažnai vyniojimą atlieka kompiliatorius. Jei naudojate primityvą ten, kur tikimasi objekto, kompiliatorius įtrauks primityvą į savo įpakavimo klasę už jus. Panašiai, jei naudojate skaičių objektą, kai tikimasi primityvo, kompiliatorius išpakuoja objektą už jus. Tai taip pat vadinama „Autoboxing“ ir „Unboxing“.
Kodėl verta naudoti skaičių klasės objektą, o ne primityvius duomenis?  
 

  • Skaičių klasės apibrėžtos konstantos, pvz., MIN_VALUE ir MAX_VALUE, suteikiančios viršutinę ir apatinę duomenų tipo ribas, yra labai naudingos.
  • Skaičių klasės objektas gali būti naudojamas kaip metodo, kuris tikisi objekto, argumentas (dažnai naudojamas manipuliuojant skaičių rinkiniais).
  • Klasės metodai gali būti naudojami konvertuojant reikšmes į ir iš kitų primityvių tipų, konvertuojant į eilutes ir iš jų bei konvertuojant tarp skaičių sistemų (dešimtainis aštuntainis šešioliktainis dvejetainis).


Visiems numerio poklasiams bendri metodai:  
 

    xxx xxxVertė() : Čia xxx žymi primityvių skaičių duomenų tipus (baitų trumpas int long float double). Šis metodas naudojamas reikšmei konvertuoti tai Numerio objektas pagal nurodytą primityvų duomenų tipą. 
     
  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  );      }   }   

Išvestis: 
 

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 


Pastaba : Konvertuojant gali sumažėti tikslumas. Pavyzdžiui, kaip matome, trupmenos dalis ('.9685') buvo palikta konvertuojant iš Double objekto į int duomenų tipą. 
 

    int palygintiTo(Skaičių poklasės nuorodos pavadinimas) : Šis metodas naudojamas palyginimui tai Numerio objektas nurodytam argumentui. Tačiau dviejų skirtingų tipų negalima palyginti, todėl ir argumentas, ir objektas Skaičius, iškviečiantys metodą, turėtų būti to paties tipo. Nuorodos pavadinimas gali būti baitas Double Integer Float Long arba 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  ));         }   }   


Išvestis: 
 

1 -1 0 


 

    loginis lygus (Objekto objektas) : Šis metodas nustato, ar tai Skaičių objektas yra lygus argumentui. 
     
  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  ));      }   }   


Išvestis: 
 

false false true 


 

    int parseInt (eilutės sint radix) : Šis metodas naudojamas norint gauti primityvų duomenų tipą a Styga . Radiksas naudojamas norint grąžinti dešimtainį (10) aštuntainį (8) arba šešioliktainį (16) ir tt kaip išvestį. 
     
  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  );             }   }   


Išvestis: 
 

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) 


 

    int parseInt(Eilutės s) : Šis metodas yra kitas anksčiau pateikto metodo variantas, kur pagal numatytuosius nustatymus radiksas yra 10 (dešimtainis). 
     
  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'  );          }   }   


Išvestis: 
 

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() : Yra du metodo toString() variantai. Jie naudojami norint gauti skaičių eilutę. Kiti šių metodų variantai yra Integer.toBinaryString(int i) Integer.toHexString(int i) Integer.toOctalString(int i) kuri atitinkamai pateiks dvejetainę šešioliktainę aštuntainę eilutę, nurodytą nurodyto sveikojo skaičiaus(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  ));      }   }   


Išvestis: 
 

12 12 10011000 98 230 


 

    Sveikasis skaičius() : Yra trys valueOf() metodo variantai. Visi šie trys metodai grąžina sveikojo skaičiaus objektą, turintį primityvaus sveikojo skaičiaus reikšmę. 
     
  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  );         }   }   


Išvestis: 
 

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) 


 


Praktinis klausimas:  
Kokia yra nurodyto java kodo išvestis?  
 

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

Parinktys:  
 

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


Atsakymas :  
 

C) 411787 


Paaiškinimas:  
Kadangi raidė yra 27, todėl leidžiami simboliai eilutės literale yra [0-9][A-Q] (nuo 10 iki 26). Taigi jo reikšmė bus apskaičiuojama taip: 
=> 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
 

Sukurti viktoriną