Java.lang.Number Class Javassa

Java.lang.Number Class Javassa

Suurimman osan ajasta työskennellessämme javassa numeroiden kanssa käytämme primitiiviset tietotyypit . Mutta Java tarjoaa myös erilaisia ​​numeerisia kääre abstraktin luokan alaluokat Numero läsnä java.lang paketti. Niitä on pääasiassa kuusi alaluokat Numeroluokan alla.Nämä alaluokat määrittelevät joitain hyödyllisiä menetelmiä, joita käytetään usein käsiteltäessä numeroita.
 

objektit-numeroHierarkia


Nämä luokat "käärivät" primitiivisen tietotyypin vastaavaan objektiin. Usein kääreen tekee kääntäjä. Jos käytät primitiiviä, jossa objektia odotetaan, kääntäjä jättää primitiivin kääreluokkaansa puolestasi. Vastaavasti jos käytät Number-objektia, kun primitiivi on odotettavissa, kääntäjä avaa objektin laatikosta puolestasi. Tätä kutsutaan myös nimellä Autoboxing ja Unboxing.
Miksi käyttää Numeroluokka-objektia primitiivisen datan sijaan?  
 

  • Lukuluokan määrittämät vakiot, kuten MIN_VALUE ja MAX_VALUE, jotka tarjoavat tietotyypin ylä- ja alarajan, ovat erittäin hyödyllisiä.
  • Numeroluokan objektia voidaan käyttää argumenttina menetelmälle, joka odottaa objektia (käytetään usein lukukokoelmien käsittelyssä).
  • Luokkamenetelmiä voidaan käyttää arvojen muuntamiseen muihin primitiivityyppeihin ja niistä muuntamiseen merkkijonoiksi ja merkkijonoista sekä muuntamiseen lukujärjestelmien välillä (desimaali oktaali heksadesimaalibinaari).


Numeron kaikille alaluokille yhteiset menetelmät:  
 

    xxx xxxArvo() : Tässä xxx edustaa primitiivisiä lukutietotyyppejä (tavu lyhyt int pitkä float double). Tätä menetelmää käytetään arvon muuntamiseen tämä Numero-objekti määritetylle primitiiviselle tietotyypille. 
     
  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  );      }   }   

Lähtö: 
 

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 


Huom : Muunnettaessa voi tapahtua mahdollista tarkkuuden menetystä. Esimerkiksi, kuten voimme nähdä, että murto-osa('.9685') on jätetty pois muunnettaessa Double-objektista int-tietotyypiksi. 
 

    int vertaaTo(numeroalaluokan viitenimi) : Tätä menetelmää käytetään vertailuun tämä Numero-objekti määritetylle argumentille. Kahta eri tyyppiä ei kuitenkaan voida verrata, joten sekä argumentin että menetelmän kutsuvan Number-objektin tulee olla samaa tyyppiä. Viitenimi voi olla tavu Double Integer Float Long tai 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  ));         }   }   


Lähtö: 
 

1 -1 0 


 

    boolen yhtä kuin (Objektiobjekti) : Tämä menetelmä määrittää, onko tämä Numeroobjekti on yhtä suuri kuin argumentti. 
     
  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  ));      }   }   


Lähtö: 
 

false false true 


 

    int parseInt(merkkijonon kantaluku) : Tätä menetelmää käytetään a:n primitiivisen tietotyypin saamiseksi merkkijono . Kantalukua käytetään palauttamaan tulosteena desimaali(10) oktaali(8) tai heksadesimaali(16) jne. 
     
  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  );             }   }   


Lähtö: 
 

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(merkkijono s) : Tämä menetelmä on toinen muunnelma yllä olevasta menetelmästä, jossa kantaluku on oletuksena 10 (desimaali). 
     
  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'  );          }   }   


Lähtö: 
 

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) 


 

    Merkkijono merkkijonoon() : ToString()-metodista on kaksi muunnelmaa. Niitä käytetään luvun merkkijonomuodossa. Muut näiden menetelmien muunnelmat ovat Integer.toBinaryString(int i) Integer.toHexString(int i) Kokonaisluku.OctalString(int i) joka palauttaa määritetyn kokonaisluvun(i) binaarisen heksadesimaalimuotoisen merkkijonoesityksen. 
     
  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  ));      }   }   


Lähtö: 
 

12 12 10011000 98 230 


 

    KokonaislukuarvoOf() : ValueOf()-menetelmästä on kolme muunnelmaa. Kaikki nämä kolme menetelmää palauttavat kokonaisluku-olion, jolla on primitiivisen kokonaisluvun arvo. 
     
  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  );         }   }   


Lähtö: 
 

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) 


 


Harjoituskysymys:  
Mikä on annetun java-koodin tulos?  
 

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

Vaihtoehdot:  
 

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


Vastaus:  
 

C) 411787 


Selitys:  
Koska kantaluku on 27, joten merkkijonoliteraalin sallitut merkit ovat [0-9][A-Q] (10 - 26). Sen arvo lasketaan seuraavasti: 
=> 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
 

Luo tietokilpailu