यह saidJVMS8
में के रूप में:जेवीएम में 'बूलियन' प्रकार का उद्देश्य क्या है?
हालांकि जावा वर्चुअल मशीन एक बूलियन प्रकार परिभाषित करता है, यह केवल इसके लिए बहुत ही सीमित सहायता प्रदान करता है। बूलियन मूल्यों पर संचालन के लिए समर्पित जावा वर्चुअल मशीन निर्देश पूरी तरह से नहीं हैं। इसके बजाए, जावा प्रोग्रामिंग भाषा जो अभिव्यक्तियों को बूलियन मानों पर संचालित करती है, जावा वर्चुअल मशीन int डेटा प्रकार के मान का उपयोग करने के लिए संकलित की जाती है।
दरअसल, इन दोनों तरीकों:
boolean expr1(boolean a, boolean b) {
return a || b;
}
int expr2(int a, int b) {
return ((a != 0) || (b != 0)) ? 1 : 0;
}
एक ही बाइट कोड (विधि हस्ताक्षर को छोड़कर) का उत्पादन करेगा
boolean expr1(boolean, boolean);
Signature: (ZZ)Z
Code:
0: iload_1
1: ifne 8
4: iload_2
5: ifeq 12
8: iconst_1
9: goto 13
12: iconst_0
13: ireturn
int expr2(int, int);
Signature: (II)I
Code:
0: iload_1
1: ifne 8
4: iload_2
5: ifeq 12
8: iconst_1
9: goto 13
12: iconst_0
13: ireturn
तो, मैं क्यों फिर भी JVM
जरूरत boolean
प्रकार करता है समझ में नहीं आता? बस विधि हस्ताक्षर की रनटाइम जांच के लिए?
आप 'बूलियन 'प्रकार के साथ' बूलियन 'प्रकार के साथ अधिक क्लीनर कोड लिख सकते हैं जो' बूलियन 'को अनुकरण कर रहा है। –
@MickMnemonic Sure। लेकिन मैं 'जावा' भाषा के बारे में बात नहीं कर रहा हूं, लेकिन 'जेवीएम' के बारे में जो 'जावा' भाषा के बारे में कुछ नहीं जानता। – Andremoniy
@sidgate सवाल इसके बजाय '0/1' का उपयोग करने के बारे में नहीं है। सवाल यह है कि, 'जेवीएम' को विशेष प्रकार के 'बूलियन' घोषित करने की आवश्यकता क्यों नहीं है, न केवल 'int', जबकि इसमें 'int' के लिए विशेष निर्देश नहीं हैं। इसलिए 'जावा' चश्मे के बारे में सवाल न करें, लेकिन 'जेवीएम' आर्किटेक्चर के बारे में। – Andremoniy