2016-02-11 6 views
7

निम्नलिखित कोड को देखते हुए, है 'एक' स्वचालित रूप से स्विच मामले बयान में प्रकार int के लिए प्रोत्साहित किया (जो के प्रकार चार है)?बाइट, शॉर्ट, चार स्वचालित रूप से स्विच स्टेटमेंट में प्रचारित है?

void testSwitch(byte x) { 
    switch(x) { 
     case 'a': // 1 
     case 256: // 2 
     default: // 3 
     case 1: // 4 
    } 

}

मैं कि Java SE7 उस के बारे में उल्लेख है नहीं पा सके ..

स्पष्टीकरण के लिए अग्रिम धन्यवाद।

सादर, डैनियल

+0

स्विच एक 'int' और बाइट, चार लेता अनुसार स्थिरांक साथ tableswitch या lookupswitch पुरातन जो आम तौर पर int करने के लिए प्रोत्साहित किया जाता है उत्पन्न होगा, और आवश्यकता होने पर छोटा स्वचालित रूप से चौड़ा हो सकता है। –

+0

['0' का प्रकार] (https://groups.google.com/forum/#!topic/java-lang-fans/0zGzPygyJSU) – ZhongYu

उत्तर

7

यहाँ भाषा विनिर्देश इस बारे में उल्लेख है है। this section on switch statements देखें:

एक switch बयान को देखते हुए, निम्न में से सभी सच है या एक संकलन समय त्रुटि होना चाहिए होती है:

  • हर मामला switch बयान के साथ जुड़े निरंतर के साथ संगत काम होना चाहिए switch कथन का अभिव्यक्ति (§5.2) का प्रकार।

  • ...

जिसका अर्थ है कि एक संकुचन रूपांतरण char मूल्य 'a' पर लागू होंगे। 97 का इसका सांख्यिक मान byte के रूप में प्रतिनिधित्व योग्य है। मान 256 हालांकि फिट नहीं है इसलिए संकलक एक त्रुटि फेंक देगा।

+0

धन्यवाद @ AR.3। अच्छी स्पष्टीकरण। यह याद करने के लायक एक बिंदु है :) – yegomosc

संबंधित मुद्दे