Java.lang.Number Trieda v jazyku Java

Java.lang.Number Trieda v jazyku Java

Väčšinu času pri práci s číslami v jave používame primitívne dátové typy . Java však poskytuje aj rôzne číselné údaje obal podtriedy pod abstraktnou triedou Číslo prítomné v java.lang balík. Existujú hlavne šesť podtriedy pod triedou čísel. Tieto podtriedy definujú niektoré užitočné metódy, ktoré sa často používajú pri práci s číslami.
 

objekty-čísloHierarchia


Tieto triedy „zabalia“ primitívny dátový typ do zodpovedajúceho objektu. Balenie často vykonáva kompilátor. Ak použijete primitívum tam, kde sa očakáva objekt, kompilátor za vás zabalí primitívum do svojej obalovej triedy. Podobne, ak použijete objekt Number, keď sa očakáva primitívum, kompilátor rozbalí objekt za vás. Toto sa tiež nazýva Autoboxing a Unboxing.
Prečo používať objekt triedy Number pred primitívnymi údajmi?  
 

  • Konštanty definované triedou čísel, ako napríklad MIN_VALUE a MAX_VALUE, ktoré poskytujú hornú a dolnú hranicu typu údajov, sú veľmi užitočné.
  • Objekt triedy čísel možno použiť ako argument metódy, ktorá očakáva objekt (často sa používa pri manipulácii s kolekciami čísel).
  • Metódy tried možno použiť na prevod hodnôt do az iných primitívnych typov na prevod do az reťazcov a na prevod medzi číselnými sústavami (desatinná osmičková hexadecimálna binárna sústava).


Metódy spoločné pre všetky podtriedy čísla:  
 

    xxx xxxValue() : Tu xxx predstavuje primitívne číselné dátové typy (byte short int long float double). Táto metóda sa používa na prevod hodnoty toto Očíslujte objekt podľa zadaného typu primitívnych údajov. 
     
  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 : Pri konverzii môže dôjsť k strate presnosti. Napríklad, ako vidíme, časť zlomku ('.9685') bola vynechaná pri konverzii z objektu Double na typ údajov int. 
 

    int CompareTo(NumberSubClass referenceName) : Táto metóda sa používa na porovnávanie toto Číslo objektu podľa zadaného argumentu. Nemožno však porovnávať dva rôzne typy, takže argument aj objekt Number, ktoré vyvolávajú metódu, by mali byť rovnakého typu. ReferenceName môže byť Byte Double Integer Float Long alebo 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  ));         }   }   


výstup: 
 

1 -1 0 


 

    boolovská hodnota sa rovná (objekt objektu) : Táto metóda určuje, či toto Objekt číslo sa 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) : Táto metóda sa používa na získanie primitívneho dátového typu a Reťazec . Radix sa používa na vrátenie desiatkovej (10), oktalovej (8) alebo hexadecimálnej (16) atď. 
     
  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) 


 

    int parseInt(String s) : Táto metóda je ďalším variantom vyššie uvedenej metódy, kde je štandardne radix 10 (desatinné). 
     
  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ú dva varianty metódy toString(). Používajú sa na získanie reťazcovej reprezentácie čísla. Ďalšie varianty týchto metód sú Integer.toBinaryString(int i) Integer.toHexString(int i) Integer.toOctalString(int i) ktorý vráti binárnu hexa-decimálnu osmičkovú reťazcovú reprezentáciu 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ú tri varianty metódy valueOf(). Všetky tieto tri metódy vrátia objekt typu Integer s hodnotou primitívneho 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:  
Aký je výstup daného java kódu?  
 

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 


odpoveď:  
 

C) 411787 


vysvetlenie:  
Keďže radix je 27, povolené znaky v reťazcovom literáli sú [0-9][A-Q] (pre 10 až 26). Takže jeho hodnota sa vypočíta takto: 
=> 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
 

Vytvoriť kvíz