स्विच, केस, डिफॉल्ट - 1

"हाय, अमीगो!"

"हाय, बिलाबो! आपको फिर से देखकर अच्छा लगा। केवल आपके व्याख्यान ही इतने अच्छे और समझने योग्य हैं। इस जावा मेमोरी मॉडल की तरह नहीं।"

"हाँ, बिलाबो जानता है कि पाठ कैसे चुनना है। आज मैं आपको स्विच स्टेटमेंट के बारे में बताने जा रहा हूँ।"

"मुझे लगता है कि किसी ने मुझे इसके बारे में पहले ही बता दिया है।"

"एली ने किया। तो, एमिगो स्विच स्टेटमेंट के बारे में कोई सबक नहीं सुनना चाहता? हो सकता है कि आप अपना खुद का पढ़ाना शुरू कर दें?"

"नहीं, मैं चाहता हूं, मैं चाहता हूं। आइए स्विच स्टेटमेंट के बारे में सुनें।"

"ठीक है। जावा में, स्विच स्टेटमेंट नाम की कोई चीज होती है। यह तब सुविधाजनक होता है जब आपको कुछ चर के विभिन्न मूल्यों के आधार पर कुछ क्रियाएं करने की आवश्यकता होती है।"

स्विच के साथ उदाहरण समतुल्य कोड
int i = 5;
switch(i)
{
 case 1:
  System.out.println("one");
  break;
 case 2:
  System.out.println("two");
  break;
 case 3:
  System.out.println("three");
  break;
 default:
  System.out.println("many");
}
int i = 5;
if (i == 1)
{
 System.out.println("one");
}
else if (i == 2)
{
 System.out.println("two");
}
else if (i == 3)
{
 System.out.println("three");
}
else
{
 System.out.println("many");
}

स्विच स्टेटमेंट आपको कोड के वांछित टुकड़े पर कूदने देता है यदि वेरिएबल पास किया गया मान उस मान से मेल खाता है जो कीवर्ड केस के बाद आता है

अगर मैं 1 है, तो निष्पादन «केस 1» चिह्नित लाइन पर कूद जाएगा।

अगर मैं 2 है, तो निष्पादन «केस 2» चिह्नित लाइन पर कूद जाएगा।

अगर मैं 3 है, तो निष्पादन «केस 3» चिह्नित लाइन पर कूद जाएगा।

"यदि किसी भी मामले में कोई छलांग नहीं है, तो «डिफ़ॉल्ट» ब्लॉक निष्पादित किया जाता है।"

"मैं समझ गया। और दाईं ओर एक ही तर्क है, लेकिन यदि कथनों का उपयोग करके कार्यान्वित किया गया है?"

"हां।"

"और 'ब्रेक' शब्द के साथ क्या है? आपने कहा कि इसे केवल लूप में ही इस्तेमाल किया जा सकता है?"

"हाँ, और यहाँ। जब ब्रेक स्टेटमेंट निष्पादित होता है, तो हम तुरंत स्विच से बाहर निकल जाते हैं ।"

"लेकिन अगर ब्रेक स्टेटमेंट हटा दिया जाता है, तो स्विच के अंदर की सभी लाइनें अंत तक निष्पादित होंगी।"

उदाहरण आउटपुट (i = 1 के लिए) आउटपुट (i = 2 के लिए)
switch(i)
{
 case 1:
  System.out.println("one");
 case 2:
  System.out.println("two");
 case 3:
  System.out.println("three");
 default:
  System.out.println("many"); }
एक
दो
तीन
अनेक
दो
तीन
अनेक

"असल में, मामला कोड में एक लेबल है। स्विच स्टेटमेंट में, हम अगले लेबल पर जाते हैं और स्विच के अंत तक या ब्रेक स्टेटमेंट मिलने तक सभी कोड निष्पादित करना शुरू करते हैं।"

"तो, अगर हम ब्रेक नहीं लिखते हैं, तो जिस लाइन पर हम कूदते हैं वह निष्पादित हो जाएगी, उसके बाद क्लोजिंग ब्रेस तक अन्य सभी लाइनें। क्या यह सही है?"

"हाँ।"

"केक का टुकड़ा। लेकिन मुझे बेहतर बयानों का उपयोग करना पसंद है। उनके पास ये व्यर्थ विराम बयान नहीं हैं।"

"यह सच है कि if बयान अक्सर अधिक कॉम्पैक्ट होते हैं। लेकिन एक स्विच स्टेटमेंट कभी-कभी अधिक पठनीय होता है।"

"तुलना करना:"

स्विच के साथ उदाहरण समतुल्य कोड
public String getName(int i)
{
 switch(i)
 {
  case 1:
   return "one";
  case 2:
   return "two";
  case 3:
   return "three";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1)
  return "one";

 if (i == 2)
  return "two";

 if (i == 3)
  return "three";

return "many"
}

"मैं यह नहीं कहूंगा कि यह अधिक पठनीय है।"

"ठीक है, लेकिन इस उदाहरण के बारे में क्या?"

स्विच के साथ उदाहरण समतुल्य कोड
public String getName(int i)
{
 switch(i)
 {
  case 1:
  case 2:
   return "one or two";
  case 3:
  case 4:
  case 5:
   return "three to five";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1 || i == 2)
  return "one or two";

 if (i == 3 || i == 4 || i == 5)
  return "three to five";

return "many"
}

"बिलाबो, आपका उदाहरण बिल्कुल सही नहीं लगता। इसलिए, अगर मैं रिटर्न का उपयोग करता हूं तो मैं ब्रेक स्टेटमेंट को छोड़ सकता हूं?"

"यह सही है। एक रिटर्न स्टेटमेंट तुरंत विधि से बाहर निकल जाएगा।"

"ऐसा लगता है कि अगर कथन हमेशा अधिक कॉम्पैक्ट होते हैं। लेकिन इस बार स्विच स्टेटमेंट अधिक पठनीय निकला।"

"काफी, आखिर में।"

"एक और बात। आपको अंत में डिफ़ॉल्ट लिखने की आवश्यकता नहीं है। यदि आप नहीं लिखते हैं, तो कोई भी लेबल मेल नहीं खाने से कुछ नहीं होगा।"

"उह, बिल्कुल। जैसे अगर-और, लेकिन पठनीय-अधिक पठनीय!"

"बहुत बढ़िया। मुझे खुशी है कि आपको मेरा पाठ पसंद आया।"

"ओह, मैं लगभग भूल गया था। प्रारंभ में, आप स्विच स्टेटमेंट में केवल आदिम प्रकार और एनम का उपयोग कर सकते थे। लेकिन अब उन्होंने स्ट्रिंग्स के लिए समर्थन जोड़ा है।"

"तुम्हारा मतलब है कि मैं यह लिखता हूं?"

उदाहरण
public int getNumber(String number)
{
 switch(number)
 {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return -1;
 }
}

"हाँ। सुविधाजनक, है ना?"

"हाँ। स्विच स्टेटमेंट बढ़िया हैं!"