🔀
Basics

switch, break और continue

More Control Flow
💡 switch एक vending machine जैसा है — number दबाओ, सीधा वही चीज़ मिलती है, एक-एक करके if-else check नहीं करना पड़ता। break loop से बाहर निकल जाता है, continue अगला round शुरू कर देता है।

switch multiple if-else की जगह use होता है जब एक variable की अलग-अलग fixed values check करनी हो — हर case के बाद break लगाना ज़रूरी है, वरना अगला case भी चल जाता है (fall-through)।

break loop को तुरंत रोक देता है। continue current iteration skip करके अगली iteration पर चला जाता है।

switch (day) {
  case 1: System.out.println("Mon"); break;
  case 2: System.out.println("Tue"); break;
  default: System.out.println("Other");
}
🔀
switch एक vending machine जैसा है — number दबाओ, सीधा वही चीज़ मिलती है, एक-एक करके if-else check नहीं करना पड़ता। break loop से बाहर निकल जाता है, continue अगला round शुरू कर देता है।
1 / 5
⚡ झट से Recap
  • switch = एक value के लिए vending machine
  • break = loop/switch तुरंत रोक दो
  • continue = इस round को skip करो
इस page में (3 subtopics)

पुराना switch fall-through के साथ break माँगता है — अगर break भूल गए, control अगले case में भी "गिर" (fall-through) जाता है, चाहे वो match ना करे। ये एक बहुत common bug source रहा है पुराने Java code में।

Java 14+ में नया "arrow syntax" (case X -> ...) आया जो automatically break कर देता है (fall-through नहीं होता — Java designers ने सुनी developers की शिकायतें!), और yield keyword से switch expression से सीधा value भी return कर सकते हो — code छोटा और safer हो जाता है।

Traditional switchModern switch (14+)
Fall-throughहाँ (break ज़रूरी)नहीं (automatic)
Value return कर सकता है?नहीं (statement है)हाँ (expression है, yield से)
Multiple values एक case मेंcase 1: case 2:case 1, 2 ->
// Modern style (Java 14+)
String dayType = switch (day) {
  case 1, 7 -> "Weekend";
  case 2, 3, 4, 5, 6 -> "Weekday";
  default -> "Invalid";
};

Java 7+ से switch String पर भी काम करता है (पहले सिर्फ़ int/char/byte/short/enum पर चलता था) — internally ये hashCode() use करके implement होता है। Enum के साथ switch बहुत clean रहता है क्योंकि सारे possible cases पहले से fixed होते हैं, और IDE तुम्हे warn कर सकता है अगर कोई case miss हो गया।

⚠️Common Mistake: switch(str) में अगर str null है, NullPointerException आएगी (immediately, switch statement में ही) — पहले null-check करो अगर possibility हो।

जब nested loops हों और तुम्हे सीधा outer loop से break/continue करना हो (सिर्फ़ inner से नहीं), तब "label" use करते हो — outer loop के पहले एक नाम दे दो (जैसे outer:), और break outer; लिखो। बिना label के, break सिर्फ़ सबसे नज़दीकी (innermost) loop को तोड़ता है।

outer:
for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    if (j == 1) continue outer; // seedha outer loop ki agli iteration
    System.out.println(i + "," + j);
  }
}