मेरे पास जावा स्विच के बारे में एक पागल सवाल है।जावा स्विच के भीतर चर घोषित करना और प्रारंभ करना
int key = 2;
switch (key) {
case 1:
int value = 1;
break;
case 2:
value = 2;
System.out.println(value);
break;
default:
break;
}
परिदृश्य 1 - जब key
दो है इसे सफलतापूर्वक के रूप में 2.
परिदृश्य 2 मूल्य प्रिंट - जब मैं case 2:
में value = 2
टिप्पणी करने के लिए जा रहा हूँ यह कह स्थानीय चर मूल्य नहीं हो सकता है squawks शुरू किया गया था।
सवाल:
परिदृश्य 1: निष्पादन प्रवाह case 1:
करने के लिए जाना नहीं है (जब key = 2
), तो यह कैसे int
के रूप में मान चर के प्रकार पता है?
परिदृश्य 2: यदि कंपाइलर मान चर के प्रकार को int
के रूप में जानता है, तो इसे case 1:
में अभिव्यक्ति तक पहुंच होनी चाहिए। (घोषणा और प्रारंभिकरण)। तो यह क्यों sqawrk करता है जब मैं value = 2
case 2:
में टिप्पणी करने जा रहा हूं, स्थानीय चर मान को प्रारंभ नहीं किया जा सकता है।
यह एक पागल सवाल नहीं है, यह एक बहुत अच्छा सवाल है। – biziclop
[स्विच केस में वेरिएबल के दायरे] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3894119/variables-scope-in-a-switch-case) –
@ फिलिप कैरिएर वास्तव में, मुझे लगता है कि यह विपरीत में होना चाहिए - यहां जवाब बेहतर है (भले ही पोस्ट नया है) क्योंकि जेएलएस का सीधा संदर्भ है, और उस पोस्ट में अलग-अलग उत्तरों में शामिल मुद्दे को संक्षेप में सारांशित करता है। [यह भी देखें] (http://meta.stackoverflow.com/questions/251938/should-i-flag-a-question-as-duplicate-if-it-has-received-better-answers)। – Tunaki