JavaRush /مدونة جافا /Random-AR /دليل فئة عدد صحيح جافا

دليل فئة عدد صحيح جافا

نشرت في المجموعة
في هذه المقالة سنتحدث عن فئة Integer. دعونا نفكر في هذه الأسئلة:
  • ما هي فئات المجمع؟
  • التعبئة التلقائية/تفريغ البدائيات؛
  • تشغيل فئة الأعداد الصحيحة وأساليبها وثوابتها.
جافا فئة عدد صحيح تعليمي - 1

فئات المجمع من الأنواع البدائية

كما تعلم، تحتوي Java على أنواع مختلفة من البيانات، والتي يمكن تقسيمها إلى كتلتين:
  • بدائية.
  • مرجع.
هناك عدة أنواع من البيانات البدائية في Java:
  • الأعداد الصحيحة - بايت، قصيرة، كثافة العمليات، طويلة؛
  • أرقام الفاصلة العائمة (الحقيقية) - تعويم، مزدوج؛
  • نوع البيانات المنطقية - منطقية؛
  • نوع بيانات الحرف - char.
كل نوع بيانات بدائي له فئة المجمع الخاصة به. نوع بيانات مرجعي يغلف شقيقه الصغير البدائي في كائن Java. فيما يلي أنواع البيانات البدائية وفئات المجمع المقابلة لها:
نوع بدائي الطبقة المجمعة
بايت بايت
قصير قصير
كثافة العمليات عدد صحيح
طويل طويل
يطفو يطفو
مزدوج مزدوج
منطقية منطقية
شار شخصية
من الناحية العملية، هناك الكثير من القواسم المشتركة بين البدائيين وفئاتهم المجمعة. يتم تنفيذ معظم العمليات بشكل متماثل. ومع ذلك، فإن الفئات المجمعة لها عدد من الخصائص التي لا تميز البدائيين. أولا، هناك فئات: عند العمل مع فئات المجمع، فإننا نعمل مع الكائنات. ثانيًا (كل ما يلي يتبع من النقطة الأولى)، يمكن أن تكون هذه الكائنات فارغة. ثالثًا، توفر فئات الغلاف عددًا من الثوابت والأساليب التي تسهل العمل مع نوع بيانات معين. في هذه المقالة سوف نلقي نظرة فاحصة على العمل مع فئة Integer.

العدد الصحيح

فئة Integer هي فئة مجمعة من النوع البدائي int. تحتوي هذه الفئة على حقل واحد من النوع int. باعتبارها فئة مجمعة، توفر Integer طرقًا مختلفة للعمل مع ints، بالإضافة إلى عدد من الطرق لتحويل int إلى String وString إلى int. أدناه سننظر في أمثلة مختلفة للعمل مع الفصل. لنبدأ بالخلق. الأكثر استخدامًا (والأسهل في الاستخدام) هو خيار الإنشاء التالي:
Integer a = 3;
أي أن تهيئة متغير عدد صحيح في هذه الحالة يشبه تهيئة متغير int. علاوة على ذلك، يمكن تهيئة متغير صحيح بقيمة متغير int:
int i = 5;
Integer x = i;
System.out.println(x); // 5
في الحالة المذكورة أعلاه، يحدث الحزم التلقائي ضمنيًا. سنتحدث أكثر عن ذلك أدناه. بالإضافة إلى خيارات التهيئة المذكورة أعلاه، يمكن إنشاء متغير عدد صحيح مثل الكائنات الأخرى، باستخدام مُنشئ والكلمة الأساسية الجديدة:
Integer x = new Integer(25);
System.out.println(x);
ومع ذلك، يستغرق الأمر وقتًا أطول للكتابة ووقتًا أطول للقراءة، لذا فإن هذا الخيار هو الأقل شيوعًا. يمكنك القيام بكل شيء باستخدام متغيرات Integer التي يمكنك القيام بها باستخدام متغيرات int. يستطيعون:
يطوى

Integer a = 6;
Integer b = 2;
Integer c = a + b;
System.out.println(c); // 8
طرح او خصم

Integer a = 6;
Integer b = 2;
Integer c = a - b;
System.out.println(c); // 4
تتضاعف

Integer a = 6;
Integer b = 2;
Integer c = a * b;
System.out.println(c); // 12
يقسم

Integer a = 6;
Integer b = 2;
Integer c = a / b;
System.out.println(c); // 3
زيادة راتب

Integer a = 6;
a++;
++a;
System.out.println(a); // 8
إنقاص

Integer a = 6;
a--;
--a;
System.out.println(a); // 4
ومع ذلك، مع كل هذا، عليك أن تكون حذرا وتذكر أن عدد صحيح هو نوع بيانات مرجعي، ويمكن أن يكون متغير هذا النوع فارغا. في هذه الحالة (إذا كان المتغير خاليًا)، فمن الأفضل الامتناع عن العمليات الحسابية (وأي عمليات أخرى لا تبشر بالخير). هنا مثال:
Integer a = null;
Integer b = a + 1; // Здесь мы упадем с "Exception in thread "main" java.lang.NullPointerException"
System.out.println(b);
يتم تنفيذ معظم عمليات المقارنة بنفس الطريقة كما في النوع البدائي int:
Integer a = 1;
Integer b = 2;

System.out.println(a > b);
System.out.println(a >= b);
System.out.println(a < b);
System.out.println(a <= b);
انتاج:

false
false
true
true
تبرز عملية المقارنة بين متغيرين صحيحين. والنقطة هنا هي أن العدد الصحيح هو نوع بيانات مرجعي، ومتغيراته تخزن مراجع للقيم، وليس القيم نفسها (الكائنات). يمكن ملاحظة مظاهر هذه الحقيقة عند تنفيذ جزء التعليمات البرمجية التالي:
Integer a = 1;
Integer b = 1;
Integer c = new Integer(1);

System.out.println(a == b); // true
System.out.println(a == c); // false
ستكون نتيجة المساواة الأولى صحيحة والثانية خاطئة. يحدث هذا لأنه في الحالة الأولى نقوم بمقارنة متغيرين ("أ" و"ب") يقومان بتخزين المراجع إلى نفس الكائن. وفي الحالة الثانية، نقوم بمقارنة متغيرين يشيران إلى كائنين مختلفين (عند إنشاء المتغير "c" قمنا بإنشاء كائن جديد). دعونا نعطي مثالا آخر مثيرا للاهتمام:
Integer a = 1;
Integer b = 1;

Integer x = 2020;
Integer y = 2020;

System.out.println(a == b); // true
System.out.println(x == y); // false
وكما نرى فإن نتيجة المقارنة الأولى صحيحة، ونتيجة الثانية خاطئة. الأمر كله يتعلق بالتخزين المؤقت. يتم تخزين جميع الأعداد الصحيحة في النطاق من -128 إلى 127 ضمناً (يمكن تخصيص هذه القيم) مؤقتًا. لذلك عندما نقوم بإنشاء متغير جديد ونخصص له قيمة عددية بين -128 و127، فإننا لا نقوم بإنشاء كائن جديد، بل نعين للمتغير مرجعًا لكائن تم إنشاؤه بالفعل في ذاكرة التخزين المؤقت. الآن، بعد معرفة هذه الحقيقة، فإن المثال أعلاه لا يبدو غامضًا جدًا. يشير المتغيران a وb إلى نفس الكائن - كائن من ذاكرة التخزين المؤقت. وأثناء تهيئة المتغيرين x وy، قمنا بإنشاء كائن جديد في كل مرة، وتقوم هذه المتغيرات بتخزين مراجع لكائنات مختلفة. وكما تعلم فإن العامل == يقوم بمقارنة قيم المتغيرات، وقيم المتغيرات المرجعية هي مراجع. للتحقق بدقة من المساواة بين متغيرين صحيحين، يجب عليك استخدام طريقة يساوي (بغض النظر عن مدى تافهتها). لنعيد كتابة المثال أعلاه:
Integer a = 1;
Integer b = 1;

Integer x = 2020;
Integer y = 2020;

System.out.println(a.equals(b)); // true
System.out.println(x.equals(y)); // true

التعبئة التلقائية والتفريغ لعدد صحيح

ما هو التعبئة والتفريغ التلقائي؟ عند إنشاء متغيرات عدد صحيح جديدة، استخدمنا البناء التالي:
Integer a = 2020;
بهذه الطريقة أنشأنا كائنًا جديدًا دون استخدام عامل التشغيل الرئيسي الجديد. وهذا ممكن بفضل آلية التعبئة التلقائية للنوع البدائي int. يحدث الإجراء العكسي عند تعيين متغير int بدائي لقيمة متغير مرجعي صحيح:
Integer a = 2020;
int x = a;
في هذه الحالة، يبدو أننا قد قمنا بتعيين مرجع (أي أن المرجع إلى كائن ما هو قيمة المتغير "a") إلى متغير بدائي. ولكن في الواقع، بفضل آلية التفريغ التلقائي، تمت كتابة القيمة 2020 إلى المتغير "x"، والتعبئة/التفريغ التلقائي ظاهرة شائعة جدًا في Java. غالبًا ما يحدث ذلك من تلقاء نفسه، وأحيانًا حتى بدون علم المبرمج. ولكن لا تزال بحاجة إلى معرفة هذه الظاهرة. لدينا مقالة مثيرة للاهتمام حول هذا الموضوع على Javarush .

ثوابت فئة عدد صحيح

توفر فئة Integer ثوابت وأساليب مختلفة للتعامل مع الأعداد الصحيحة. في هذا القسم سوف نلقي نظرة فاحصة على بعض منهم في الممارسة العملية. لنبدأ بالثوابت. ويبين الجدول أدناه جميع ثوابت الفئة:
كوستانتا وصف
مقاس عدد البتات في نظام الأرقام المكون من رقمين الذي يشغله النوع int
بايت عدد البايتات في نظام الأرقام المكون من رقمين الذي يشغله النوع int
قيمة الحد الأقصى الحد الأقصى للقيمة التي يمكن أن يحتفظ بها النوع int
MIN_VALUE الحد الأدنى للقيمة التي يمكن أن يحملها النوع int
يكتب إرجاع كائن من النوع Class من النوع int
دعونا نلقي نظرة على قيم كل هذه الثوابت من خلال تشغيل الكود التالي:
public static void main(String[] args) {
        System.out.println(Integer.SIZE);
        System.out.println(Integer.BYTES);
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.TYPE);
}
ونتيجة لذلك نحصل على الإخراج التالي:

32
4
2147483647
-2147483648
int

طرق فئة عدد صحيح

الآن دعونا نلقي نظرة سريعة على الطرق الأكثر استخدامًا لفئة Integer. لذا، فإن "الأعلى" تتجه إلى طرق تحويل رقم من سلسلة، أو تحويل سلسلة من رقم. لنبدأ بتحويل سلسلة إلى رقم. يتم استخدام طريقة parseInt لهذه الأغراض ، التوقيع أدناه:
  • 
    static int parseInt(String s)
تقوم هذه الطريقة بتحويل السلسلة إلى int. دعونا نوضح كيف تعمل هذه الطريقة:
int i = Integer.parseInt("10");
System.out.println(i); // 10
إذا لم يكن التحويل ممكنًا — على سبيل المثال، مررنا كلمة إلى الأسلوب parseInt — فسيتم طرح NumberFormatException. تحتوي طريقة parseInt(String s) على شقيق مثقل:
  • 
    static int parseInt(String s, int radix)
تقوم هذه الطريقة بتحويل المعلمة s إلى int. تشير معلمة الجذر إلى نظام الأرقام الذي تمت كتابة الرقم فيه في الأصل، والذي يجب تحويله إلى int. الأمثلة أدناه:
System.out.println(Integer.parseInt("0011", 2)); // 3
System.out.println(Integer.parseInt("10", 8));   // 8
System.out.println(Integer.parseInt("F", 16));   // 15
تقوم أساليب parseInt بإرجاع نوع البيانات البدائي int. هذه الطرق لها نظير - طريقة valueOf . بعض الاختلافات في هذه الطريقة تستدعي ببساطة parseInt داخليًا. الفرق عن parseInt هو أن نتيجة valueOf ستكون عددًا صحيحًا وليس int. دعونا نفكر أدناه في جميع الخيارات المتاحة لهذه الطريقة ومثال لكيفية عملها:
  • قيمة عدد صحيح ثابت (int i) - تُرجع عددًا صحيحًا قيمته i؛
  • قيمة عدد صحيح ثابت (String s) - تشبه parseInt (String s)، لكن النتيجة ستكون عددًا صحيحًا؛
  • قيمة عدد صحيح ثابت (String s, int radix) - تشبه parseInt (String s, int radix)، لكن النتيجة ستكون عددًا صحيحًا.
أمثلة:
int a = 5;
Integer x = Integer.valueOf(a);
Integer y = Integer.valueOf("20");
Integer z = Integer.valueOf("20", 8);

System.out.println(x); // 5
System.out.println(y); // 20
System.out.println(z); // 16
لقد بحثنا في الطرق التي تسمح لك بتحويل String إلى int/Integer. يتم تنفيذ الإجراء العكسي باستخدام أساليب toString . يمكنك استدعاء التابع toString على أي كائن Integer والحصول على تمثيل السلسلة الخاص به:
Integer x = 5;
System.out.println(x.toString()); // 5
ومع ذلك، نظرًا لأن طريقة toString غالبًا ما يتم استدعاؤها ضمنيًا على الكائنات (على سبيل المثال، عند إرسال كائن إلى وحدة التحكم للطباعة)، نادرًا ما يتم استخدام هذه الطريقة بشكل صريح من قبل المطورين. هناك أيضًا طريقة ثابتة toString، والتي تأخذ معلمة int وتحولها إلى تمثيل سلسلة. على سبيل المثال:
System.out.println(Integer.toString(5)); // 5
ومع ذلك، مثل طريقة toString غير الثابتة، فإن استخدام طريقة ثابتة بشكل صريح أمر نادر الحدوث. الأكثر إثارة للاهتمام هو الأسلوب الثابت toString، والذي يأخذ معلمتين صحيحتين:
  • سلسلة ثابتة toString(int i, int radix) - ستحول i إلى تمثيل سلسلة في نظام أرقام الجذر.
مثال:
System.out.println(Integer.toString(5, 2)); // 101
تحتوي فئة Integer على طريقتين للعثور على الحد الأقصى/الحد الأدنى لعددين:
  • static int max(int ​​a, int b) سيُرجع القيمة الأكبر بين المتغيرات التي تم تمريرها؛
  • static int min(int a, int b) سيُرجع أصغر قيمة بين المتغيرات التي تم تمريرها.
أمثلة:
int x = 4;
int y = 40;

System.out.println(Integer.max(x,y)); // 40
System.out.println(Integer.min(x,y)); // 4

خاتمة

في هذه المقالة نظرنا إلى فئة عدد صحيح. تحدثنا عن نوع هذا الفصل وما هي فئات المجمع. نظرنا إلى الفصل من وجهة نظر عملية. لقد نظرنا إلى أمثلة على العمليات الحسابية، بما في ذلك عمليات المقارنة. لقد ألقينا نظرة على تعقيدات مقارنة متغيرين صحيحين، وفحصنا مفهوم الكائنات المخزنة مؤقتًا. لقد ذكرنا أيضًا ظاهرة التعبئة/التفريغ التلقائي لأنواع البيانات البدائية. بالإضافة إلى ذلك، تمكنا من إلقاء نظرة على بعض أساليب فئة Integer، وكذلك بعض الثوابت. وأعطوا أمثلة على تحويل الأرقام من نظام أرقام إلى آخر.

العمل في المنزل

  1. ادرس الطرق الأخرى الموجودة في فئة Integer (يمكنك دراستها على الموقع الإلكتروني مع الوثائق الرسمية )، واكتب في التعليقات أي الطرق التي درستها (باستثناء تلك الواردة في المقالة) هي الأكثر فائدة في رأيك ( سوف تستخدمه في أغلب الأحيان). وأيضا تقديم أسباب لرأيك.

    ملحوظة: لا توجد إجابات صحيحة هنا، ولكن هذا النشاط سيسمح لك بدراسة الفصل بشكل أفضل.

  2. حل مشكلة بسيطة صغيرة لتوحيد المواد.

    لدينا رقمين:

    1100001001 - في نظام الأرقام الثنائية
    33332 - في نظام الأرقام الرباعي

    من الضروري، باستخدام أساليب فئة الأعداد الصحيحة فقط، تحديد الحد الأقصى بين رقمين محددين، ثم عرض الفرق بين الحد الأقصى والحد الأدنى للقيمة في نظام الأرقام الثلاثي.

  3. تحويل الحد الأقصى لقيمة عدد صحيح ممكن إلى نظام الأرقام الثماني وعرض عدد الأرقام في الرقم الناتج (حساب الرقم برمجياً).

تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION