الفكرة ببساطة
في switch التقليدية نختار case المطابقة مرة واحدة لنحدد نقطة الدخول. بعدها ينفّذ البرنامج الأسطر التالية حتى يصل إلى break أو إلى نهاية switch.
break & Fall-through
في switch التقليدية نختار case المطابقة مرة واحدة لنحدد نقطة الدخول. بعدها ينفّذ البرنامج الأسطر التالية حتى يصل إلى break أو إلى نهاية switch.
بدون break: عندما تكون ch = 'a' ندخل حالة a ونضع 10 في x. لعدم وجود break نكمل إلى تعليمة b، فتصبح 20، ثم تعليمة c، فتصبح 30. هذا الاستمرار اسمه Fall-through.
مع break: ندخل حالة a ونضع 10 في x، ثم نصل إلى break فنخرج مباشرة. لا نصل إلى الإسنادين التاليين، فتظل القيمة النهائية 10.
تنفيذ سطر تحت case 'b' بعد الدخول من a لا يعني أن الحرف صار b. قيمة ch لم تتغير؛ الذي حصل هو استمرار التنفيذ لأننا لم نضع نقطة خروج.
char ch = 'a';
int x = 0;
switch (ch) {
case 'a': x = 10;
case 'b': x = 20;
case 'c': x = 30;
}
System.out.println("x = " + x);ch = 'a' وx = 0.case 'a'، فننفّذ x = 10.break نكمل بالتتابع: x = 20 ثم x = 30. كل إسناد يستبدل القيمة السابقة.switch يعرض x = 30. مع break بعد كل إسناد ستكون النتيجة x = 10.لا تعِد فحص كل case في ذهنك كأنها if مستقلة. بعد التطابق نتبع التعليمات بالترتيب. إذا بدأنا من b فلا نرجع إلى a، لكن قد نكمل إلى c عند غياب break.
غيّر ch، ثم بدّل خيار break. الكود يتغير أمامك لتقارن مسار الخروج مع Fall-through.
محاكاة لهذا المثال المحدد، وليست تشغيلًا لكود Java عشوائي.