Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

JShell में Java 9: स्विच स्टेटमेंट परिभाषित करना

JShell Java 9 का REPL टूल है जो नियंत्रण प्रवाह स्टेटमेंट्स जैसे switch का त्वरित परीक्षण करने की अनुमति देता है। Java 12+ ने स्विच एक्सप्रेशंस (तीर सिंटैक्स) पेश किए, लेकिन पारंपरिक स्विच स्टेटमेंट JShell में काम करता है।

पारंपरिक स्विच स्टेटमेंट (Java 9+)

ब्रेक के बिना (फॉल-थ्रू)

jshell> int i = 10
i ==> 10

jshell> switch(i) {
   ...> case 1: System.out.println("1");
   ...> case 10: System.out.println("10");
   ...> default: System.out.println("default");
   ...> }
10
default
// नोट: फॉल-थ्रू - दोनों case 10 और default निष्पादित हुए!

ब्रेक के साथ (कोई फॉल-थ्रू नहीं)

jshell> int i = 1
i ==> 1

jshell> switch(i) {
   ...> case 1: System.out.println("1"); break;
   ...> case 10: System.out.println("10"); break;
   ...> default: System.out.println("default"); break;
   ...> }
1
// केवल मिलान वाला केस निष्पादित होता है

एकाधिक केस लेबल्स

jshell> String day = "MON"
day ==> "MON"

jshell> switch(day) {
   ...> case "MON": case "TUE": case "WED": 
   ...> case "THU": case "FRI": System.out.println("कार्यदिवस"); break;
   ...> case "SAT": case "SUN": System.out.println("सप्ताहांत"); break;
   ...> default: System.out.println("अमान्य दिन");
   ...> }
कार्यदिवस

Java 12+ स्विच एक्सप्रेशंस (JShell में भी काम करता है)

तीर सिंटैक्स (कोई फॉल-थ्रू नहीं, मान लौटाता है)

jshell> int dayNum = 3
dayNum ==> 3

jshell> String dayType = switch(dayNum) {
   ...>     case 1, 2, 3, 4, 5 -> "कार्यदिवस";
   ...>     case 6, 7 -> "सप्ताहांत";
   ...>     default -> "अमान्य";
   ...> };
dayType ==> "कार्यदिवस"

कॉलन सिंटैक्स के साथ yield (Java 13+)

jshell> int value = switch(dayNum) {
   ...>     case 1, 2, 3, 4, 5: yield "कार्यदिवस";
   ...>     case 6, 7: yield "सप्ताहांत";
   ...>     default: yield "अमान्य";
   ...> };
value ==> "कार्यदिवस"

JShell-विशिष्ट व्यवहार

बहु-लाइन इनपुट

jshell> switch(2) {
   ...> case 1: System.out.println("एक");
   ...> case 2: System.out.println("दो");
   ...> default: System.out.println("अन्य");
   ...> }
दो
अन्य

पिछले परिणाम चर ($) का उपयोग

jshell> 2 + 3
$1 ==> 5

jshell> switch($1) {
   ...> case 5: System.out.println("पांच"); break;
   ...> default: System.out.println("अन्य");
   ...> }
पांच

एनम के साथ स्विच

jshell> enum Color { RED, GREEN, BLUE }
|  created enum Color

jshell> Color c = Color.GREEN
c ==> GREEN

jshell> switch(c) {
   ...> case RED: System.out.println("लाल"); break;
   ...> case GREEN: System.out.println("हरा"); break;
   ...> case BLUE: System.out.println("नीला"); break;
   ...> }
हरा

स्विच स्टेटमेंट नियम

नियमविवरण
केस मानकंपाइल-टाइम स्थिरांक होने चाहिए
प्रकारbyte, short, char, int, String, Enum, Character, Byte, Short, Integer
डुप्लिकेट केसअनुमत नहीं
डिफ़ॉल्टवैकल्पिक, कहीं भी रख सकते हैं
फॉल-थ्रूडिफ़ॉल्ट व्यवहार (ब्रेक के बिना)
स्कोपकेस ब्लॉक स्कोप साझा करते हैं (ब्लॉक के लिए {} का उपयोग करें)

स्कोप उदाहरण

jshell> switch(1) {
   ...> case 1: 
   ...>     int x = 10;  // पूरे स्विच ब्लॉक के लिए स्कोप!
   ...>     System.out.println(x);
   ...> case 2:
   ...>     // x यहां दृश्यमान है लेकिन अनारंभिक!
   ...>     System.out.println(x);  // त्रुटि यदि केस 2 निष्पादित होता है
   ...> }

// सही: ब्लॉक स्कोप के लिए ब्रेसेस का उपयोग करें
jshell> switch(1) {
   ...> case 1: {
   ...>     int x = 10;
   ...>     System.out.println(x);
   ...>     break;
   ...> }
   ...> case 2: {
   ...>     int x = 20;  // अलग स्कोप
   ...>     System.out.println(x);
   ...>     break;
   ...> }
   ...> }

सर्वोत्तम अभ्यास

  • लगभग हमेशा break का उपयोग करें जब तक कि फॉल-थ्रू इरादतन न हो
  • स्कोप अलगाव के लिए ब्लॉक {} का उपयोग करें केस में चर घोषित करते समय
  • डिफ़ॉल्ट केस शामिल करें अप्रत्याशित मानों को संभालने के लिए
  • Java 12+ के लिए स्विच एक्सप्रेशंस पर विचार करें - सुरक्षित, अभिव्यंजक
  • Enum के साथ स्विच का उपयोग करें प्रकार सुरक्षा के लिए

तुलना: स्टेटमेंट बनाम एक्सप्रेशन

पहलूस्विच स्टेटमेंटस्विच एक्सप्रेशन (Java 12+)
सिंटैक्सcase X: ... break;case X -> ... या case X: yield ...
मान लौटाता हैनहींहां
फॉल-थ्रूडिफ़ॉल्टनहीं (तीर) / स्पष्ट (yield)
स्कोपसाझाप्रति-केस पृथक
थकाऊनहींहां (सभी केस कवर होने चाहिए)
  1. Java 9 में JShell के डिफ़ॉल्ट एडिटर को कैसे संशोधित करें? Java 9 में JShell के डिफ़ॉल्ट एडिटर को कैसे संशोधित करें?

    JShell REPL (Read-Evaluate-Print Loop) को इम्प्लीमेंट करता है जो कमांड-लाइन से कोड पढ़ता है, दिए गए स्निपेट का मूल्यांकन करता है, और परिणाम को वापस प्रिंट करता है। JShell में, JShell Editor Pad का उपयोग करके डिफ़ॉल्ट JShell एडिटर से कोड एडिट करना संभव है। हम डिफ़ॉल्ट एडिटर को संशोधित करने के लिए ए

  1. - जावा 9 में JShell में एक्सप्रेशन, वेरिएबल और मेथड कैसे परिभाषित करें?

    JShell एक रीड-इवैल्यूएट-प्रिंट लूप (REPL) है जो डिक्लेरेशन, स्टेटमेंट, और एक्सप्रेशन का मूल्यांकन करता है जैसे ही हम उन्हें दर्ज करते हैं और तुरंत परिणाम दिखाता है। यह टूल कमांड प्रॉम्प्ट से चलता है। नीचे, हम JShell में एक्सप्रेशन, वेरिएबल और मेथड परिभाषित कर सकते हैं। एक्सप्रेशन हम JShell में कोई भ

  1. - जावा 9 में JShell क्या है?

    JShell जावा 9 संस्करण में पेश की गई एक नई अवधारणा है। यह जावा को REPL (रीड-इवैल-प्रिंट-लूप) क्षमता प्रदान करता है। JShell का उपयोग करके, हम इसे कंपाइल किए बिना जावा-आधारित लॉजिक और एक्सप्रेशन का परीक्षण कर सकते हैं। REPL तत्काल फीडबैक लूप के रूप में कार्य करता है और उस विशेष भाषा में उत्पादकता पर बह