Java.lang.Number Klasa u Javi

Java.lang.Number Klasa u Javi

Većinu vremena dok radimo s brojevima u Javi koristimo primitivni tipovi podataka . Ali Java također nudi razne numeričke vrijednosti omot podklase pod apstraktnom klasom Broj prisutne u java.lang paket. Postoje uglavnom šest podklase pod klasom brojeva. Ove podklase definiraju neke korisne metode koje se često koriste pri radu s brojevima.
 

objekti-brojHijerarhija


Ove klase 'omataju' primitivni tip podataka u odgovarajući objekt. Često prelamanje vrši prevodilac. Ako koristite primitivu gdje se očekuje objekt, kompajler stavlja primitivu u kutiju u svojoj klasi omotača umjesto vas. Slično, ako koristite objekt Number kada se očekuje primitiv, kompajler raspakuje objekt umjesto vas. Ovo se također naziva Autoboxing i Unboxing.
Zašto koristiti objekt klase Number umjesto primitivnih podataka?  
 

  • Konstante definirane klasom brojeva kao što su MIN_VALUE i MAX_VALUE koje daju gornju i donju granicu tipa podataka vrlo su korisne.
  • Objekt klase brojeva može se koristiti kao argument metode koja očekuje objekt (često se koristi kada se manipulira zbirkama brojeva).
  • Metode klase mogu se koristiti za pretvaranje vrijednosti u i iz drugih primitivnih tipova za pretvaranje u i iz nizova i za pretvaranje između brojčanih sustava (decimalni oktalni heksadecimalni binarni).


Metode zajedničke za sve podklase broja:  
 

    xxx xxxVrijednost() : Ovdje xxx predstavlja primitivne brojčane tipove podataka (byte short int long float double). Ova se metoda koristi za pretvorbu vrijednosti ovaj Objekt broja prema navedenom primitivnom tipu podataka. 
     
  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  );      }   }   

Izlaz: 
 

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 


Bilješka : Tijekom pretvorbe može doći do mogućeg gubitka preciznosti. Na primjer, kao što možemo vidjeti da je fraction part('.9685') izostavljen tijekom pretvorbe iz Double object u int tip podataka. 
 

    int compareTo(NumberSubClass referenceName) : Ova se metoda koristi za usporedbu ovaj Objekt broja prema navedenom argumentu. Međutim, dva različita tipa ne mogu se uspoređivati ​​tako da i argument i objekt Number koji pozivaju metodu trebaju biti istog tipa. Referentni naziv može biti Byte Double Integer Float Long ili 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  ));         }   }   


Izlaz: 
 

1 -1 0 


 

    Boolean jednako (Object obj) : Ova metoda utvrđuje je li ovaj Objekt broja jednak je 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  ));      }   }   


Izlaz: 
 

false false true 


 

    int parseInt(String sint radix) : Ova se metoda koristi za dobivanje primitivnog tipa podataka a Niz . Radix se koristi za vraćanje decimalne (10), oktalne (8) ili heksadecimalne (16) itd. reprezentacije kao izlaza. 
     
  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  );             }   }   


Izlaz: 
 

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) : Ova metoda je još jedna varijanta gornje metode gdje je po zadanom radiks 10 (decimalno). 
     
  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'  );          }   }   


Izlaz: 
 

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() : Postoje dvije varijante metode toString(). Koriste se za dobivanje String reprezentacije broja. Ostale varijante ovih metoda su Integer.toBinaryString(int i) Integer.toHexString(int i) Integer.toOctalString(int i) koji će vratiti binarnu heksadecimalnu oktalnu reprezentaciju niza navedenog cijelog broja(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  ));      }   }   


Izlaz: 
 

12 12 10011000 98 230 


 

    Cijeli broj valueOf() : Postoje tri varijante metode valueOf(). Sve ove tri metode vraćaju Integer objekt koji sadrži vrijednost primitivnog cijelog broja. 
     
  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  );         }   }   


Izlaz: 
 

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) 


 


Praktično pitanje:  
Što je izlaz zadanog java koda?  
 

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

opcije:  
 

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


odgovor:  
 

C) 411787 


Objašnjenje:  
Budući da je radix 27, dopušteni znakovi u String literalu su [0-9][A-Q] (za 10 do 26). Stoga će se njegova vrijednost izračunati na sljedeći način: 
=> 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
 

Napravi kviz