हालांकि अंकगणितीय ऑपरेटरों को जावा भाषा विनिर्देश (5.6.2 बाइनरी न्यूमेरिक प्रमोशन) के अनुसार, किसी भी संख्यात्मक प्रकार पर काम करने के लिए परिभाषित किया गया है, टाइप बाइट के संचालन और ऑपरेटरों को स्वचालित रूप से ऑपरेटर को सौंपने से पहले int को स्वचालित रूप से प्रचारित किया जाता है।
प्रकार बाइट या शॉर्ट के चर पर अंकगणितीय परिचालन करने के लिए, आपको अभिव्यक्ति को कोष्ठक में संलग्न करना होगा (जिसके अंदर ऑपरेशन टाइप int के रूप में किए जाएंगे), और फिर परिणाम को वांछित प्रकार पर डालें।
byte a = 23;
byte b = 34;
byte c = (byte) (a + b);
असली जावा गुरुओं पर एक फॉलो-ऑन प्रश्न है: क्यों? प्रकार बाइट और शॉर्ट पूरी तरह से ठीक संख्यात्मक प्रकार हैं। जावा इन प्रकारों पर प्रत्यक्ष अंकगणितीय संचालन की अनुमति क्यों नहीं देता है? (उत्तर "परिशुद्धता का नुकसान" नहीं है, क्योंकि पहले स्थान पर int में कनवर्ट करने का कोई स्पष्ट कारण नहीं है।)
अद्यतन: jrudolph सुझाव देता है कि यह व्यवहार JVM में उपलब्ध संचालन पर आधारित है, विशेष रूप से, कि केवल पूर्ण- और डबल-वर्ड ऑपरेटर लागू किए गए हैं। इसलिए, बाइट्स और शॉर्ट्स पर ऑपरेटर के लिए, उन्हें int में परिवर्तित किया जाना चाहिए।
स्रोत
2008-09-17 09:16:38
आईआईआरसी जेवीएम स्टोर बाइट्स और शॉर्ट्स को इनट्स के रूप में स्टोर करता है, इसलिए आमतौर पर इन दो डेटा प्रकारों का उपयोग करने के लिए बहुत कम लाभ होता है। बेशक, मुझे एहसास है कि आप अपने उदाहरण से कहीं अधिक जटिल कर रहे हैं और शायद एक बहुत अच्छा कारण है। –