2017-07-27 14 views
5

को जावा में कास्टिंग क्यों हम किसी भी विधि का एक short पैरामीटर स्वीकार करता है करने के लिए एक तर्क के रूप में एक char मूल्य पारित नहीं हो सकता है, जबकि हम एक और तरीका जिसका पैरामीटर int प्रकार की है करने के लिए एक char मूल्य पारित कर सकते हैं? प्रकार का कास्टिंग char से short तक क्यों नहीं होता है, यह देखते हुए कि आकार बराबर हैं? मुझे उम्मीद है कि शॉर्ट short कर सकते हैं जितना मूल्य भी स्टोर कर सकते हैं।प्रकार चार से कम

+4

मैंने अंग्रेजी के रूप में बेहतर पढ़ने के लिए अधिकांश प्रश्नों को ठीक कर दिया है, लेकिन मुझे अंतिम वाक्य को समझ में नहीं आया: "मुझे उम्मीद है कि शॉर्ट कम से कम पर्याप्त मूल्यों को भी स्टोर कर सकता है" इसलिए मैंने इसे छोड़ दिया है यह था ... –

उत्तर

13

क्यों हम किसी भी पद्धति के लिए एक तर्क यह है कि एक short पैरामीटर

स्वीकार करता है क्योंकि वहाँ कोई अंतर्निहित एक मंगलाचरण संदर्भ में short को char से रूपांतरण के रूप में एक char मूल्य पारित नहीं कर सकते हैं।

जबकि हम एक और तरीका जिसका पैरामीटर int प्रकार की है करने के लिए एक char मूल्य पारित कर सकते हैं?

ऐसा इसलिए है क्योंकि वहाँ एक मंगलाचरण संदर्भ में एक अंतर्निहित रूपांतरण int को char से उपलब्ध है।

कास्टिंग short को char से नहीं हो, यह देखते हुए कि आकार के बराबर हैं क्यों टाइप करता है? मुझे उम्मीद है कि शॉर्ट short कर सकते हैं जितना मूल्य भी स्टोर कर सकते हैं।

हालांकि char और short ही आकार हैं, char अहस्ताक्षरित है जबकि short हस्ताक्षरित है। यही कारण है कि char से short तक कोई अंतर्निहित रूपांतरण नहीं है।

int को char से रूपांतरण एक आदिम रूपांतरण (JLS 5.1.2) short को char से रूपांतरण जबकि चौड़ा है एक आदिम रूपांतरण (JLS 5.1.3) संकुचन है। विशेष रूप से (जोर मेरा):

एक अभिन्न प्रकार टी करने के लिए एक चार की एक संकुचन रूपांतरण वैसे ही बस को छोड़ देता है सब लेकिन n न्यूनतम आदेश बिट्स, जहां n प्रकार टी का प्रतिनिधित्व करने के लिए इस्तेमाल किया बिट्स की संख्या है संख्यात्मक मूल्य की परिमाण के बारे में जानकारी के संभावित नुकसान के अतिरिक्त, इससे परिणामस्वरूप मान ऋणात्मक संख्या हो सकता है, भले ही वर्ण 16-बिट हस्ताक्षरित पूर्णांक मानों का प्रतिनिधित्व करते हैं।

6

जावा विनिर्देश का कहना है:

इसके अलावा, अगर अभिव्यक्ति प्रकार बाइट की एक निरंतर अभिव्यक्ति (§15.28), छोटा है, चार, है या int:

एक आदिम संकुचन रूपांतरण का उपयोग किया जा सकता है यदि चर का प्रकार बाइट, शॉर्ट, या चार है, और निरंतर अभिव्यक्ति का मान चर के प्रकार में प्रतिनिधित्व योग्य है।

चार का न्यूनतम मान 0 और 65,535 का अधिकतम मूल्य है।

लघु का न्यूनतम मूल्य -32,768 है और अधिकतम मूल्य 32,767 है।

इंटीजर का न्यूनतम मूल्य -2,147,483,648 है और अधिकतम मूल्य 2,147,483,647 है।

तो चार पूर्णांक में फिट हो सकता है लेकिन संक्षेप में नहीं, यही कारण है कि आपको जावा को आश्वस्त करना चाहिए कि आप यहां टाइपकास्ट करना चाहते हैं।

+0

छोटा और साथ ही पूर्णांक दोनों हस्ताक्षर और हस्ताक्षरित मान रख सकते हैं लेकिन पूर्णांक के मामले में कास्टिंग टाइप कर रहे हैं लेकिन –

+0

हां में नहीं। चार का न्यूनतम मान 0 और 65,535 का अधिकतम मूल्य है। शॉर्ट का न्यूनतम मान -32,768 है और अधिकतम मूल्य 32,767 है। इंटीजर का न्यूनतम मूल्य -2,147,483,648 है और अधिकतम मूल्य 2,147,483,647 है। तो चार पूर्णांक में फिट हो सकता है लेकिन संक्षेप में नहीं। – Max

+0

हाँ ... मुझे मिल गया। बहुत कुछ धन्यवाद –

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