ما هي حالة التبديل في Java وكيفية استخدامها؟
نشرت: 2022-03-04تعد حالة التبديل في Java واحدة من العديد من عبارات Java التي تخبر لغة البرمجة بما يجب فعله. مثل الجمل في اللغة الإنجليزية التي تعطي فكرة كاملة عن النص وتتضمن عبارات ، فإن عبارات Java هي أوامر تتضمن تعبيرًا واحدًا أو أكثر ينفذها مترجم Java. بعبارات أبسط ، فإن تعليمة Java عبارة عن تعليمات تشرح ما يجب أن يحدث.
تنتهي جملة Java بفاصلة منقوطة (؛) وتخبر Java بمعالجة التعليمات حتى تلك الفاصلة المنقوطة. بشكل افتراضي ، يتبع مترجم Java الترتيب الذي تُكتب به العبارات ويقوم بتشغيل جملة تلو الأخرى. ومع ذلك ، فإن العبارات التي تتحكم في تدفق البرنامج (عبارات التحكم في التدفق) ، مثل الحلقات والشرطية ، لا تتبع الترتيب الافتراضي للتنفيذ. تركز هذه المقالة على أحد هذه الأنواع من آليات التحكم في التحديد - بيان حالة تبديل Java .
جدول المحتويات
ما هي حالة التبديل في جافا؟
تدعم Java ثلاثة أنواع من العبارات: جمل التعبير لتغيير قيم المتغيرات ، وطرق الاستدعاء وإنشاء كائنات ، وعبارات التصريح لإعلان المتغيرات ، وبيانات تدفق التحكم لتحديد ترتيب تنفيذ العبارات.
عبارة حالة تبديل Java هي نوع من بيان تدفق التحكم الذي يسمح لقيمة تعبير أو متغير بتغيير تدفق التحكم في تنفيذ البرنامج من خلال فرع متعدد الاتجاهات. على عكس عبارات if-then و if-then-else ، فإن جملة تبديل Java بها العديد من مسارات التنفيذ. حالة التبديل في Java تعمل مع أنواع البيانات الأولية القصيرة ، والبايت ، والعملية ، والشار. من JDK7 ، يمكن أيضًا استخدام مفتاح Java مع فئة String والأنواع المعددة وفئات Wrapper التي تلتف أنواع البيانات الأولية مثل Byte و Character و Integer و Short.
يسمى نص بيان حالة التبديل في Java باسم كتلة التبديل. يتم تصنيف كل عبارة في مجموعة التبديل باستخدام حالة واحدة أو أكثر أو تسميات افتراضية. ومن ثم ، فإن تعليمة التبديل تقوم بتقييم تعبيرها ، متبوعًا بتنفيذ جميع العبارات التي تتبع تسمية الحالة المطابقة.
فيما يلي بناء جملة بيان حالة التبديل:
// بيان التبديل
التبديل (التعبير)
{
// بيانات الحالة
// يجب أن تكون القيم من نفس نوع التعبير
قيمة الحالة 1:
// صياغات
استراحة؛ // كسر اختياري
قيمة الحالة 2:
// صياغات
استراحة؛ // كسر اختياري
// يمكننا الحصول على أي عدد من بيانات الحالة
// أدناه عبارة افتراضية ، تُستخدم عندما لا تكون أي من الحالات صحيحة.
// لا يوجد فاصل مطلوب في الحالة الافتراضية.
إفتراضي :
// صياغات
}
مثال على جملة تبديل Java
يوضح مثال كود Java التالي عددًا صحيحًا يسمى "month" تمثل قيمته واحدًا من 12 شهرًا من السنة. يستخدم الرمز بيان حالة التبديل لعرض اسم الشهر بناءً على قيمة الشهر.
مفتاح فئة عامة مثال {
العامة الثابتة الفراغ الرئيسي (سلسلة [] args) {
الشهر int = 6 ؛
سلسلة شهر سلسلة؛
التبديل (الشهر) {
الحالة 1: monthString = "يناير" ؛
استراحة؛
الحالة 2: monthString = "February" ؛
استراحة؛
الحالة 3: monthString = "March" ؛
استراحة؛
الحالة 4: monthString = "April" ؛
استراحة؛
الحالة 5: monthString = "مايو" ؛
استراحة؛
الحالة 6: monthString = "يونيو" ؛
استراحة؛
الحالة 7: monthString = "يوليو" ؛
استراحة؛
الحالة 8: monthString = "أغسطس" ؛
استراحة؛
الحالة 9: monthString = "سبتمبر" ؛
استراحة؛
الحالة 10: monthString = "أكتوبر" ؛
استراحة؛
الحالة 11: monthString = "نوفمبر" ؛
استراحة؛
الحالة 12: monthString = "ديسمبر" ؛
استراحة؛
الافتراضي: monthString = "شهر غير صالح" ؛
استراحة؛
}
System.out.println (monthString) ؛
}
}
الإخراج: يونيو
الغرض من بيان break في حالة تبديل Java
تعليمة break هي جانب أساسي من جوانب حالة تبديل Java التي تنهي تعليمة التبديل التضمينية. تعليمة break مطلوبة لأنه بدونها ، ستسقط العبارات الموجودة في كتلة التبديل. وبالتالي ، بغض النظر عن تعبير تسميات الحالة التالية ، يتم تنفيذ جميع العبارات بعد تسمية الحالة المطابقة بالتسلسل حتى يتم العثور على تعليمة break.
الكود التالي هو مثال لإظهار سقوط كتلة التبديل في حالة عدم وجود تعليمة break.
فئة عامة SwitchExampleFallThrough {
العامة الثابتة الفراغ الرئيسي (سلسلة [] args) {
java.util.ArrayList <String> futureMonths =
java.util.ArrayList <String> () الجديد ،
الشهر int = 6 ؛
التبديل (الشهر) {
الحالة 1: FutureMonths.add ("يناير") ؛
الحالة 2: FutureMonths.add ("فبراير") ؛
الحالة 3: futureMonths.add ("مارس") ؛
الحالة 4: FutureMonths.add ("أبريل") ؛
الحالة 5: futureMonths.add ("مايو") ؛
الحالة 6: FutureMonths.add ("يونيو") ؛
الحالة 7: FutureMonths.add ("يوليو") ؛
الحالة 8: FutureMonths.add ("أغسطس") ؛
الحالة 9: FutureMonths.add ("سبتمبر") ؛
الحالة 10: FutureMonths.add ("أكتوبر") ؛
الحالة 11: FutureMonths.add ("نوفمبر") ؛
الحالة 12: FutureMonths.add ("ديسمبر") ؛
استراحة؛
الافتراضي: كسر ؛
}
إذا (futureMonths.isEmpty ()) {
System.out.println ("رقم الشهر غير صالح") ؛
} آخر {
لـ (String monthName: FutureMonths) {
System.out.println (monthName) ،
}
}
}
}
انتاج:
يونيه
يوليو
أغسطس
سبتمبر
اكتوبر
شهر نوفمبر
ديسمبر
يعرض الكود أعلاه شهر السنة المقابل للشهر الصحيح والأشهر التالية. هنا ، لا يخدم بيان الكسر النهائي أي غرض لأن التدفق يقع خارج بيان التبديل. يعد استخدام تعليمة break مفيدًا لأنه يجعل الكود أقل عرضة للخطأ والتعديلات أسهل. القسم الافتراضي في الكود يعالج جميع القيم التي لا ينظمها أي قسم من أقسام الحالة.
بيان تبديل جافا مع تسميات حالة متعددة
يمكن أن تحتوي عبارات التبديل في Java على تسميات حالة متعددة أيضًا. يوضح الكود التالي نفسه - هنا ، يتم حساب عدد الأيام في شهر معين من السنة.
تبديل الفئةمتعدد {
العامة الثابتة الفراغ الرئيسي (سلسلة [] args) {
شهر int = 2 ؛
السنة الدولية = 2020 ؛
عدد الأيام = 0 ؛
التبديل (الشهر) {
الحالة 1: الحالة 3: الحالة 5:
الحالة 7: الحالة 8: الحالة 10:
الحالة 12:
عدد الأيام = 31 ؛
استراحة؛
الحالة 4: الحالة 6:
الحالة 9: الحالة 11:
عدد الأيام = 30 ؛
استراحة؛
الحالة 2:
إذا (((السنة٪ 4 == 0) &&
! (السنة٪ 100 == 0))
|| (السنة٪ 400 == 0))
عدد الأيام = 29 ؛
آخر
عدد الأيام = 28 ؛
استراحة؛
إفتراضي:
System.out.println ("شهر غير صالح") ؛
استراحة؛
}
System.out.println (“عدد الأيام ="
+ عدد الأيام) ؛
}
}
انتاج:
عدد الأيام = 29
عبارات حالة تبديل Java المتداخلة
التبديل المتداخل هو عندما تستخدم مفتاحًا كجزء من تسلسل عبارات المحول الخارجي. في هذه الحالة ، لا يوجد تعارض بين ثوابت الحالة في المحول الآخر وتلك الموجودة في المحول الداخلي لأن تعليمة switch تحدد الكتلة الخاصة بها.
يوضح المثال التالي استخدام عبارات حالة تبديل Java المتداخلة:
TestNest فئة عامة {
الرئيسية العامة الثابتة الفراغ (سلسلة [] args)
{
فرع السلسلة = "محرك بحث مخصص" ؛
السنة الدولية = 2 ؛
مفتاح (سنة) {
حالة 1:
System.out.println ("المقررات الاختيارية: الجبر ، اللغة الإنجليزية المتقدمة")؛
استراحة؛
الحالة 2:
التبديل (فرع) // التبديل المتداخلة
{
الحالة "محرك بحث مخصص":
الحالة "CCE":
System.out.println ("الدورات الاختيارية: البيانات الضخمة ، التعلم الآلي") ؛
استراحة؛
الحالة "ECE":
System.out.println ("المقررات الاختيارية: هندسة الهوائيات")؛
استراحة؛
إفتراضي:
System.out.println ("الدورات الاختيارية: التحسين") ؛
}
}
}
}
انتاج:
المقررات الاختيارية: البيانات الضخمة ، تعلم الآلة
استخدام السلاسل في عبارات التبديل
بدءًا من JDK7 ، يمكنك استخدام كائن String في تعبير عبارة التبديل. تبدو مقارنة كائن السلسلة في تعبير بيان التبديل مع التعبيرات المرتبطة بكل تسمية حالة كما لو كانت تستخدم طريقة String.equals. أيضًا ، تعتبر المقارنة بين كائنات السلسلة في تعبير بيان التبديل حساسة لحالة الأحرف.
يعرض مثال الكود التالي نوع اللعبة بناءً على قيمة السلسلة المسماة "game".
فئة عامة StringInSwitchStatement مثال {
العامة الثابتة الفراغ الرئيسي (سلسلة [] args) {
لعبة سلسلة = "لعبة الكريكيت" ؛
التبديل (لعبة) {
الحالة "الكرة الطائرة": الحالة "كرة القدم": الحالة "الكريكيت":
System.out.println ("هذه لعبة خارجية") ؛
استراحة؛
حالة "Card Games": case "Chess": case "Puzzles": case "Indoor basketball":
System.out.println ("هذه لعبة داخلية") ؛
استراحة؛
إفتراضي:
System.out.println ("ما هي اللعبة؟")؛
}
}
}
انتاج:
هذه لعبة في الهواء الطلق
قواعد يجب تذكرها عند استخدام عبارات تبديل Java
سيكون من الأفضل أن تضع قواعد معينة في الاعتبار أثناء استخدام عبارات تبديل Java . فيما يلي قائمة بالمثل:
- يجب أن يكون لقيمة الحالة والمتغير في المحول نفس نوع البيانات.
- لا تسمح عبارات تبديل Java بقيم الحالة المكررة.
- يجب أن تكون قيمة الحالة حرفية أو ثابتة. المتغيرات غير مسموح بها.
- يؤدي استخدام تعليمة break داخل المفتاح إلى إنهاء تسلسل العبارة.
- بيان الاستراحة اختياري وسيؤدي حذفه إلى متابعة التنفيذ في الحالة اللاحقة.
- العبارة الافتراضية هي أيضًا اختيارية ويمكن أن تحدث في أي مكان داخل كتلة التبديل. إذا لم يتم وضعها في النهاية ، فيجب إضافة تعليمة break بعد العبارة الافتراضية لتخطي تنفيذ جملة الحالة التالية.
الطريق إلى الأمام
تتمتع Java بشعبية لا مثيل لها بين المبرمجين والمطورين وهي واحدة من أكثر لغات البرمجة طلبًا اليوم. وغني عن القول ، إن المطورين ومهندسي البرمجيات الناشئين الذين يرغبون في صقل مهاراتهم لسوق العمل المتطور باستمرار يحتاجون إلى الحصول على حصن من مهارات جافا الخاصة بهم.
تم تصميم شهادة PG المرتبطة بالوظيفة من upGrad في هندسة البرمجيات خصيصًا للطلاب الجدد ومرشحي السنة النهائية الذين يرغبون في تعلم البرمجة والحصول على وظائف برمجية للمبتدئين.
إذا كنت تتساءل عما تتضمنه الدورة التدريبية عبر الإنترنت التي تبلغ مدتها 5 أشهر ، فإليك بعض النقاط البارزة لإعطائك فكرة:
- اربح MERN Stack وتخصصات Cloud-Native
- تعلم أفضل المهارات مثل قواعد بيانات Java و DSA و CSS3 و HTML5 و AWS و MERN و SQL و NoSQL والمزيد
- أكثر من 500 ساعة من المحتوى مع أكثر من 350 ساعة من التدريب العملي
- خمسة مشاريع صناعية وأكثر من 50 جلسة مباشرة
- التحضير للتعيين والتوجيه الوظيفي
- منتديات المناقشة وشبكة الأقران القوية
إذا كنت ترغب في بدء رحلتك نحو مهنة واعدة في هندسة البرمجيات ، فهذه هي فرصتك للتعلم من الأفضل.
1. ما هي الحالة في بيان التبديل؟
تسمح عبارة التبديل في Java باختبار مساواة المتغير مقابل قائمة القيم. هنا ، تُعرف كل قيمة بالحالة ، ويتم التحقق من المتغير المشغل لكل حالة.
2. ما هي مزايا حالة التبديل؟
الميزة الأساسية لبيانات حالة تبديل Java على شلالات if-else التقليدية هي أن الأولى تسمح للمبرمجين بكتابة كود أكثر إحكاما ووضوحًا وقابلية للقراءة. من ناحية أخرى ، غالبًا ما تتضمن عبارات if-else الكثير من عمليات تكرار الكود. وبالتالي ، إذا أردنا تغيير جزء معين من الكود ، فسيتعين علينا إجراء تغييرات في أماكن أخرى. لتجنب هذه العملية التي تستغرق وقتًا طويلاً والمعرضة للخطأ ، من الحكمة استخدام حالات التبديل.
3. ما هو الفرق بين حالة التبديل و if-else؟
في حالة عبارات التبديل ، يتم تنفيذ الحالات بالتتابع واحدة تلو الأخرى حتى يتم العثور على الكلمة الأساسية break أو يتم تنفيذ العبارة الافتراضية. على العكس من ذلك ، في حالة عبارات if-else ، يتم تنفيذ كتلة "if" أو "else" اعتمادًا على الشرط.