Java'da Java.lang.Number Sınıfı

Java'da Java.lang.Number Sınıfı

Java'da sayılarla çalışırken çoğu zaman kullanırız ilkel veri türleri . Ancak Java aynı zamanda çeşitli sayısal değerler de sağlar. sarıcı soyut sınıf Sayısı altındaki alt sınıflar java.lang paket. Esas olarak var altı Number sınıfının altında yer alan alt sınıflar. Bu alt sınıflar sayılarla uğraşırken sıklıkla kullanılan bazı yararlı yöntemleri tanımlar.
 

nesneler-numarasıHiyerarşi


Bu sınıflar, ilkel veri türünü karşılık gelen bir nesneye 'sarar'. Çoğu zaman sarma derleyici tarafından yapılır. Bir nesnenin beklendiği yerde bir ilkel kullanırsanız, derleyici sizin için sarmalayıcı sınıfında ilkel öğeyi kutular. Benzer şekilde, bir ilkel beklendiğinde bir Number nesnesi kullanırsanız, derleyici sizin için nesnenin kutusunu açar. Buna Otomatik Kutulama ve Kutudan Çıkarma da denir.
Neden ilkel veriler üzerinde Number sınıfı nesnesi kullanılmalı?  
 

  • Veri tipinin üst ve alt sınırlarını sağlayan MIN_VALUE ve MAX_VALUE gibi sayı sınıfı tarafından tanımlanan sabitler oldukça kullanışlıdır.
  • Sayı sınıfı nesnesi, bir nesne bekleyen bir yöntemin argümanı olarak kullanılabilir (genellikle sayı koleksiyonlarını işlerken kullanılır).
  • Sınıf yöntemleri, değerleri diğer ilkel türlere ve dizelerden dönüştürmek ve sayı sistemleri (ondalık sekizli onaltılık ikili) arasında dönüştürmek için kullanılabilir.


Number'ın tüm alt sınıflarında ortak olan yöntemler:  
 

    xxx xxxDeğer() : Burada xxx ilkel sayı veri türlerini temsil eder (byte short int long float double). Bu yöntem değerini dönüştürmek için kullanılır. Bu Belirtilen temel veri türüne ait sayı nesnesi. 
     
  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  );      }   }   

Çıkış: 
 

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 


Not : Dönüştürme sırasında olası hassasiyet kaybı meydana gelebilir. Örneğin, gördüğümüz gibi Double nesnesinden int veri tipine dönüşüm sırasında kesir kısmı('.9685') dışarıda bırakılmıştır. 
 

    int CompareTo(NumberSubClass referenceName) : Bu yöntem karşılaştırmak için kullanılır Bu Belirtilen bağımsız değişkenin sayı nesnesi. Ancak iki farklı tür karşılaştırılamaz, dolayısıyla hem argüman hem de yöntemi çağıran Number nesnesi aynı türde olmalıdır. ReferenceName, Byte Double Integer Float Long veya Short olabilir. 
     
  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  ));         }   }   


Çıkış: 
 

1 -1 0 


 

    boole eşittir (Nesne nesnesi) : Bu yöntem, Bu Sayı nesnesi argümana eşittir. 
     
  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  ));      }   }   


Çıkış: 
 

false false true 


 

    int parseInt(Dize sint radix) : Bu yöntem bir öğenin ilkel veri türünü elde etmek için kullanılır. Sicim . Radix, çıktı olarak ondalık(10) sekizlik(8) veya onaltılık(16) vb. gösterimi döndürmek için kullanılır. 
     
  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  );             }   }   


Çıkış: 
 

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(Dize s) : Bu yöntem, sayı tabanının varsayılan olarak 10(ondalık) olduğu yukarıdaki yöntemin başka bir çeşididir. 
     
  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'  );          }   }   


Çıkış: 
 

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) 


 

    Dize toString() : toString() yönteminin iki çeşidi vardır. Bir sayının String gösterimini elde etmek için kullanılırlar. Bu yöntemlerin diğer çeşitleri şunlardır: Integer.toBinaryString(int i) Integer.toHexString(int i) Integer.toOctalString(int i) bu, sırasıyla belirtilen tamsayı(i)'nin ikili onaltılık sekizlik dize gösterimini döndürür. 
     
  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  ));      }   }   


Çıkış: 
 

12 12 10011000 98 230 


 

    Tamsayı valueOf() : valueOf() yönteminin üç çeşidi vardır. Bu üç yöntemin tümü, ilkel bir tam sayının değerini tutan bir Tamsayı nesnesi döndürür. 
     
  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  );         }   }   


Çıkış: 
 

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) 


 


Alıştırma Sorusu:  
Verilen java kodunun çıktısı nedir?  
 

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

Seçenekler :  
 

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


Cevap :  
 

C) 411787 


Açıklama :  
Radix 27 olduğundan, bir String değişmezinde izin verilen karakterler [0-9][A-Q](10'dan 26'ya kadar) şeklindedir. Dolayısıyla değeri şu şekilde hesaplanacaktır: 
=> 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
 

Test Oluştur