इसे कहा जाता है संकीर्ण प्रकार कास्टिंग। oracle docs
से:
22 आदिम प्रकार पर विशिष्ट रूपांतरण को सीमित करने आदिम रूपांतरण कहा जाता है:
बाइट या चार के लिए कम
चार बाइट करने के लिए या बाइट के लिए कम
पूर्णांक, लघु, या चार
लंबे समय तक बाइट, लघु, चार, या int
बाइट, लघु, चार, पूर्णांक, या लंबी
बाइट, लघु, चार, पूर्णांक, लंबे समय के लिए डबल, या करने के लिए नाव नाव
एक संकुचन आदिम रूपांतरण के समग्र परिमाण के बारे में जानकारी खो सकते हैं एक संख्यात्मक मान और सटीकता और रेंज भी खो सकता है। और चौड़ा संकुचन:
जावा में, वहाँ प्रकार रूपांतरण के दो बुनियादी प्रकार हैं।
एक widening conversion
तब होता है जब आप एक प्रकार बड़ा (या व्यापक) श्रृंखला के साथ साथ छोटे (या संकरा) टाइप करने के लिए से परिवर्तित करते हैं। इस वजह से, डेटा हानि के लिए कोई मौका नहीं है और रूपांतरण "सुरक्षित" माना जाता है।
एक narrowing conversion
तब होता है जब आप एक प्रकार छोटे (या संकरा) श्रृंखला के साथ बड़ा (या व्यापक) टाइप करने के लिए साथ में कनवर्ट। जब से हम सीमा सिकुड़ रहे हैं, वहाँ डेटा नुकसान का एक मौका है, इसलिए इस रूपांतरण माना जाता है
बाइट से रूपांतरणचार को "असुरक्षित" एक विशेष मामला है और का प्रतिनिधित्व करता है और को को एक ही समय में संकीर्ण करना।रूपांतरण एक पूर्णांक को बाइट परिवर्तित करने के लिए और फिर पूर्णांकचार में परिवर्तित हो जाता से शुरू होता है।
एक कारण मैं सोच सकता हूं कि टाइपिंग कास्टिंग को संकुचित करने के परिणामस्वरूप त्रुटि/अपवाद किसी मामले में हानि होने पर मामलों में सुविधाजनक/आसान/त्वरित प्रकार के रूपांतरण की अनुमति नहीं देता है। कंपाइलर यह सुनिश्चित करने के लिए हमें छोड़ देता है कि परिवर्तित डेटा छोटी सीमा में फिट हो सकेगा। यह भी उपयोगी है अगर हम double
के मान को गोलाकार करने के लिए मूल्यों को जल्दी से छोटा करना चाहते हैं (इसे int
पर टाइप-कास्टिंग करके)।
शायद भाषा डिजाइनर नौसिखिया प्रोग्रामर द्वारा की गई गलतियों की उच्च संभावना की कीमत के साथ इसका उपयोग करने के मामले में सुविधाओं को लागू करते हैं। मैं सहमत हूं कि अगर यह परिदृश्य – gerrytan
बीटीडब्ल्यू-जावा में कुछ प्रकार की कंपाइलर चेतावनियां दी जाती हैं तो यह अच्छा होगा, ASCII नहीं, यूनिकोड का उपयोग करता है। जावा का 'char' डेटाटाइप एक यूटीएफ -16 कोड-यूनिट स्टोर करता है, जिसमें से एक या दो यूनिकोड कोडपॉइंट एन्कोड करते हैं। एक बेस कोडपॉइंट और शून्य या अधिक कोडपॉइंट्स संयोजन एक ग्रैफेम बनाते हैं, जो लोग "चरित्र" शब्द का उपयोग करते समय सोचते हैं। –