कल रात कुछ एससीजेपी प्रमाणीकरण पढ़ने के बाद, मुझे स्विच स्टेटमेंट्स और अभिव्यक्तियों का मूल्यांकन कैसे किया जाता है, और मैं कुछ चीज़ों से थोड़ा परेशान हूं।एक बूलियन अभिव्यक्ति एक केस ब्लॉक में मान्य क्यों है, जब बूलियन स्विच के लिए डेटा प्रकार समर्थित नहीं हैं?
जावा आप एक बूलियन पर स्विच करने देगा नहीं है, तो निम्नलिखित संकलन नहीं होगा:
public static void switchOnBoolean(boolean theBool)
{
System.out.println("\n\nAssessing boolean :" + theBool);
// line below won't compile, since booleans are not valid for the switch statement
switch(theBool)
{
case true:
{
System.out.println("The boolean was true");
break;
}
case false:
{
System.out.println("The boolean was false");
}
}
}
हालांकि, संकलक अगर आप एक अभिव्यक्ति है कि में एक बूलियन मान का मूल्यांकन उपयोग करने का प्रयास शिकायत नहीं होगा जैसे एक मामले ब्लॉक,:
public static void switchOnChar(char theChar)
{
System.out.println("\n\nAssessing char : " + theChar);
switch(theChar)
{
case 'a':
{
System.out.println("The char was a");
break;
}
case 'b':
{
System.out.println("The char was b");
break;
}
case ('c' | 'd'):
{
System.out.println("The char was c or d");
break;
}
default:
{
System.out.println("The char didn't match anything, must be something else");
}
}
}
अंत में, मैं कभी भी मामले ('c' | 'd')
के बाद से यह शायद एक बूलियन का मूल्यांकन होगा पर नहीं पहुंच पा ...
तो मेरे सवाल है:
- ऐसा क्यों है
('c' | 'd')
की तरह कुछ का उपयोग करने के लिए कानूनी है? - कैसे कि कभी भी उपयोगी हो सकता है, क्योंकि ऐसा करना नहीं पहुंचा जा सकता
- होगा यदि आप कभी भी एक से अधिक मूल्य पर केस करना चाहता था, लेकिन एक डिफ़ॉल्ट का उपयोग किए बिना, एक अगर-किसी और बयान के रूप में करने के लिए फिर से लागू अपने ही विकल्प है ?
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html अगर बयान पर जाए बिना एक से अधिक मामले मिलान कर सकते हैं # जेएलएस -15.22.1 – Mat
यह पहुंच योग्य क्यों होगा? –
'सी' और 'डी' का प्रयास करें जो 'या' सी '+' डी 'से मेल खाता है जो Ç और' c '/' d 'से मेल खाता है nul byte \ 0;) –