1. बहु-विकल्प ऑपरेटर:switch

जावा का एक और दिलचस्प ऑपरेटर है जो इसे अपने दादाजी (सी ++) से विरासत में मिला है। हम बात कर रहे हैं switchबयान की। हम इसे बहुविकल्पी संचालिका भी कह सकते हैं। यह थोड़ा बोझिल लगता है:

switch(expression)
{
   case value1: code1;
   case value2: code2;
   case value3: code3;
}

कोष्ठकों के भीतर एक अभिव्यक्ति या चर इंगित किया गया है। यदि अभिव्यक्ति का मान है value1, तो जावा मशीन निष्पादित करना शुरू कर देती है code1। यदि व्यंजक के बराबर है value2, तो निष्पादन कूद जाता है code2। अगर अभिव्यक्ति के बराबर है value3, तो code3निष्पादित किया जाता है।

उदाहरण:

कोड कंसोल आउटपुट
int temperature = 38;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
}
High

2. breakकथन मेंswitch

एक switchबयान की एक महत्वपूर्ण विशेषता यह है कि प्रोग्राम केवल आवश्यक लाइन (आवश्यक कोड ब्लॉक) पर कूदता है और फिर कोड के सभी ब्लॉकों को अंत तक निष्पादित करता है switch। में मान के अनुरूप कोड का ब्लॉक ही नहीं switch, बल्कि कोड के अंत तक कोड के सभी ब्लॉक switch

उदाहरण:

कोड कंसोल आउटपुट
int temperature = 36;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
}
Low
Normal
High

36 के तापमान को देखते हुए, प्रोग्राम switchस्टेटमेंट में प्रवेश करेगा, कोड के पहले ब्लॉक (पहला मामला) पर कूदेगा और निष्पादित करेगा, और फिर कोड के बाकी ब्लॉकों को खुशी से निष्पादित करेगा।

यदि आप कोड के केवल एक ब्लॉक को निष्पादित करना चाहते हैं - मिलान किए गए मामले से जुड़े कोड का ब्लॉक - तो आपको ब्लॉक को एक breakबयान के साथ समाप्त करने की आवश्यकता है;

उदाहरण:

कोड कंसोल आउटपुट
int temperature = 36;

switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
}
Low

breakआप स्टेटमेंट के अंतिम मामले में छोड़ सकते हैं switch, क्योंकि वह ब्लॉक ब्रेक स्टेटमेंट के साथ या उसके बिना अंतिम है।


3. डिफ़ॉल्ट क्रिया:default

एक और महत्वपूर्ण बिंदु। क्या होता है यदि सूचीबद्ध मामलों में से कोई भी switchकोष्ठक में अभिव्यक्ति से मेल नहीं खाता है?

यदि कोई मैचिंग केस नहीं मिलता है, तो बाकी स्टेटमेंट को छोड़ दिया जाता है, और कर्ली ब्रेस के स्टेटमेंट को switchसमाप्त करने के बाद प्रोग्राम का निष्पादन जारी रहेगा।switch

उस ने कहा, आप एक बयान switchमें अन्य शाखा की तरह एक बयान भी व्यवहार कर सकते हैं। if-elseऐसा करने के लिए, defaultकीवर्ड का उपयोग करें।

यदि ब्लॉक caseमें से कोई भी switchअभिव्यक्ति के मान से मेल नहीं खाता है और ब्लॉक switchहै default, तो डिफ़ॉल्ट ब्लॉक निष्पादित किया जाएगा। उदाहरण:

कोड कंसोल आउटपुट
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
Call an ambulance

4. तुलना करना switchऔरif-else

कथन switchकुछ हद तक एक कथन के समान है if-else, केवल अधिक जटिल है।

आप हमेशा एक स्टेटमेंट के कोड को switchकई ifस्टेटमेंट के रूप में फिर से लिख सकते हैं। उदाहरण:

स्विच के साथ कोड if-else के साथ कोड
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
int temperature = 40;

if (temperature == 36)
{
   System.out.println("Low");
}
else if (temperature == 37)
{
   System.out.println("Normal");
}
else if (temperature == 38)
{
   System.out.println("High");
}
else
{
   System.out.println("Call an ambulance");
}

बाईं ओर का कोड ठीक उसी तरह काम करेगा जैसे दाईं ओर का कोड।

एकाधिक if-elseबयानों की एक श्रृंखला बेहतर होती है जब एक ifबयान में प्रत्येक अलग मामले में विभिन्न जटिल अभिव्यक्तियां होती हैं।



switch5. किसी कथन में किन भावों का प्रयोग किया जा सकता है ?

caseकिसी switchकथन में सभी प्रकारों को लेबल के रूप में उपयोग नहीं किया जा सकता है । आप निम्न प्रकार के शाब्दिक उपयोग कर सकते हैं:

  • पूर्णांक प्रकार: byte, short, int,long
  • char
  • String
  • किसी भी enumप्रकार

आप मामला लेबल के रूप में किसी अन्य प्रकार का उपयोग नहीं कर सकते हैं ।

enumएक अंदर एक बयान का उपयोग करने का उदाहरण switch:

Day day = Day.MONDAY;
switch (day)
{
   case MONDAY:
      System.out.println("Monday");
      break;
   case TUESDAY:
      System.out.println("Tuesday");
      break;
   case WEDNESDAY:
      System.out.println("Wednesday");
      break;
   case THURSDAY:
      System.out.println("Thursday");
      break;
   case FRIDAY:
      System.out.println("Friday");
      break;
   case SATURDAY:
      System.out.println("Saturday");
      break;
   case SUNDAY:
      System.out.println("Sunday");
      break;
}

नोट: यदि आप enumकिसी कथन के अंदर का उपयोग करते हैं, तो आपको लेबल switchमें प्रत्येक मान के सामने वर्ग का नाम लिखने की आवश्यकता नहीं है। caseकेवल मान लिखना ही काफी है।