Java.lang.Number فئة في جافا

Java.lang.Number فئة في جافا

في معظم الأحيان أثناء العمل مع الأرقام في جافا نستخدمها أنواع البيانات البدائية . لكن Java توفر أيضًا العديد من الأرقام الرقمية إزار الفئات الفرعية ضمن رقم الفصل الملخص الموجود في java.lang طَرد. هناك بشكل رئيسي ستة الفئات الفرعية ضمن فئة الأرقام. تحدد هذه الفئات الفرعية بعض الطرق المفيدة التي يتم استخدامها بشكل متكرر أثناء التعامل مع الأرقام.
 

كائنات رقمHierarchy


تقوم هذه الفئات "بلف" نوع البيانات البدائي في كائن مطابق. غالبًا ما يتم التغليف بواسطة المترجم. إذا كنت تستخدم عنصرًا بدائيًا حيث يُتوقع وجود كائن، فسيقوم المترجم بتخزين العنصر البدائي في فئة الغلاف الخاصة به نيابةً عنك. وبالمثل، إذا كنت تستخدم كائنًا رقميًا عندما يكون من المتوقع وجود كائن بدائي، فسيقوم المترجم بإلغاء تحديد الكائن نيابةً عنك. وهذا ما يسمى أيضًا Autoboxing وUnboxing.
لماذا تستخدم كائن فئة الرقم على البيانات البدائية؟  
 

  • تعتبر الثوابت المحددة بواسطة فئة الأرقام مثل MIN_VALUE وMAX_VALUE التي توفر الحدود العلوية والسفلية لنوع البيانات مفيدة للغاية.
  • يمكن استخدام كائن فئة الرقم كوسيطة لطريقة تتوقع كائنًا (غالبًا ما يستخدم عند معالجة مجموعات الأرقام).
  • يمكن استخدام أساليب الفصل لتحويل القيم من وإلى الأنواع البدائية الأخرى للتحويل من وإلى السلاسل وللتحويل بين أنظمة الأرقام (النظام العشري الثماني السداسي العشري الثنائي).


الطرق الشائعة لجميع الفئات الفرعية للرقم:  
 

    xxx xxxValue() : هنا يمثل xxx أنواع بيانات الأرقام البدائية (بايت قصير int طويل تعويم مزدوج). يتم استخدام هذه الطريقة لتحويل قيمة هذا رقم الكائن لنوع البيانات البدائي المحدد. 
     
  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  );      }   }   

الإخراج: 
 

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 


ملحوظة : أثناء التحويل قد يحدث فقدان محتمل للدقة. على سبيل المثال، يمكننا أن نرى أن جزء الكسر ('.9685') قد تم استبعاده أثناء التحويل من كائن مزدوج إلى نوع بيانات int. 
 

    int CompareTo (اسم مرجع NumberSubClass) : يتم استخدام هذه الطريقة للمقارنة هذا كائن رقم للوسيطة المحددة. ومع ذلك، لا يمكن مقارنة نوعين مختلفين، لذا يجب أن يكون كل من الوسيطة وكائن الرقم الذي يستدعي الطريقة من نفس النوع. يمكن أن يكون اسم المرجع عبارة عن عدد صحيح مزدوج بايت يطفو طويلًا أو قصيرًا. 
     
  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  ));         }   }   


الإخراج: 
 

1 -1 0 


 

    قيمة منطقية (كائن obj) : هذه الطريقة تحديد ما إذا كان هذا كائن الرقم يساوي الوسيطة. 
     
  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  ));      }   }   


الإخراج: 
 

false false true 


 

    int parseInt (سلسلة الخطيئة الجذر) : يتم استخدام هذه الطريقة للحصول على نوع البيانات البدائي a خيط . يتم استخدام Radix لإرجاع تمثيل عشري (10) ثماني (8) أو سداسي عشري (16) وما إلى ذلك كمخرجات. 
     
  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  );             }   }   


الإخراج: 
 

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) 


 

    كثافة العمليات parseInt (سلسلة ق) : هذه الطريقة هي نسخة أخرى من الطريقة المذكورة أعلاه حيث يكون الجذر الافتراضي هو 10 (عشري). 
     
  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'  );          }   }   


الإخراج: 
 

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) 


 

    سلسلة إلى سلسلة () : هناك نوعان مختلفان من طريقة toString (). يتم استخدامها للحصول على تمثيل سلسلة لرقم. المتغيرات الأخرى لهذه الأساليب هي Integer.toBinaryString(int i) Integer.toHexString(int i) Integer.toOctalString(int i) والتي ستُرجع تمثيل سلسلة ثماني ثنائي سداسي عشري لعدد صحيح محدد (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  ));      }   }   


الإخراج: 
 

12 12 10011000 98 230 


 

    قيمة عدد صحيح () : هناك ثلاثة أنواع مختلفة من طريقة valueOf (). تقوم كل هذه الطرق الثلاث بإرجاع كائن عدد صحيح يحمل قيمة عدد صحيح بدائي. 
     
  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  );         }   }   


الإخراج: 
 

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) 


 


سؤال الممارسة:  
ما هو ناتج كود جافا المحدد؟  
 

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

خيارات :  
 

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


إجابة :  
 

C) 411787 


توضيح :  
نظرًا لأن الجذر هو 27، فإن الأحرف المسموح بها في السلسلة الحرفية هي [0-9] [A-Q] (من 10 إلى 26). لذلك سيتم حساب قيمتها على النحو التالي: 
=> أ*(27^0) + ن*(27^1) + س*(27^2) + ك*(27^3) 
=> 10*1 + 23*27 + 24*27*27 + 20*27*27*27 
=> 10 + 621 + 17496 + 393660 
=> 411787
 

إنشاء اختبار