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

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

"हाय, बिलाबो! तुम्हाला पुन्हा भेटून खूप आनंद झाला. फक्त तुमचे लेक्चर्स इतके चांगले आणि समजण्यासारखे आहेत. या Java मेमरी मॉडेलसारखे नाही."

"होय, बिलाबोला धडे कसे निवडायचे हे माहित आहे. आज मी तुम्हाला स्विच स्टेटमेंटबद्दल सांगणार आहे."

"मला वाटते की कोणीतरी मला याबद्दल आधीच सांगितले आहे."

"एलीने केले. तर, अमिगोला स्विच स्टेटमेंटबद्दल धडा ऐकायचा नाही? कदाचित तुम्ही स्वतःचे शिकवायला सुरुवात कराल?"

"नाही, मला हवे आहे, मला हवे आहे. चला स्विच स्टेटमेंटबद्दल ऐकूया."

"ठीक आहे. Java मध्ये, स्विच स्टेटमेंट नावाचे काहीतरी आहे. जेव्हा तुम्हाला काही व्हेरिएबलच्या विविध मूल्यांवर अवलंबून काही क्रिया करणे आवश्यक असते तेव्हा ते सोयीचे असते."

स्विचसह उदाहरण समतुल्य कोड
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"); }
एक
दोन
तीन
अनेक
दोन
तीन
अनेक

"वास्तविक, केस हे कोडमधील एक लेबल आहे. स्विच स्टेटमेंटमध्ये, आम्ही पुढील लेबलवर जातो आणि स्विच संपेपर्यंत किंवा ब्रेक स्टेटमेंट पूर्ण होईपर्यंत सर्व कोड कार्यान्वित करणे सुरू करतो."

"म्हणून, जर आपण ब्रेक लिहिला नाही, तर आपण ज्या ओळीवर उडी मारतो ती कार्यान्वित केली जाईल, त्यानंतर शेवटच्या ब्रेसपर्यंत इतर सर्व ओळी असतील. ते बरोबर आहे का?"

"हो."

"केकचा तुकडा. पण मला इफ स्टेटमेंट अधिक चांगले वापरायला आवडते. त्यांच्याकडे ही निरर्थक ब्रेक स्टेटमेंट नाहीत."

"हे खरे आहे की जर विधाने बर्‍याचदा अधिक संक्षिप्त असतात. परंतु स्विच स्टेटमेंट कधीकधी अधिक वाचनीय असते."

"तुलना:"

स्विचसह उदाहरण समतुल्य कोड
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;
 }
}

"हो. सोयीस्कर, बरोबर?"

"हो. स्विच स्टेटमेंट छान आहेत!"