तार्किक रूप से, if(!foo)
और if(foo == false)
समकक्ष हैं। जावा में उनका प्रतिनिधित्व कैसे किया जाता है? क्या बाइटकोड में या प्रदर्शन में संकलन के बाद दोनों के बीच कोई अंतर है? मैं जेएलएस में एक जवाब खोजने में असमर्थ था, और खोज = बनाम == टाइपो और ==/बराबर() व्यवहार के बारे में बहुत सारे परिणाम लाए। (इस मामले में, प्रतीकों ने मेरी खोज में बाधा डाली; भविष्य के खोजकर्ताओं के लिए, निषेध ऑपरेटर, झूठी बराबर, झूठी के बराबर, शर्त नहीं)।जावा में if (! Foo) और if (foo == false) के बीच प्रदर्शन अंतर क्या है, यदि कोई है?
सीडब्ल्यू बहस को दूर करने के लिए: यह प्रश्न यह नहीं पूछ रहा है कि कौन से प्रकार के लोग पसंद करते हैं या जिन्हें बेहतर शैली माना जाता है। मुझे भाषा के कार्यान्वयन में मतभेदों में दिलचस्पी है, इसलिए एक सही जवाब है। संबंधित बल्कि नहीं-काफी-ए-शिकार: Difference between while (x = false) and while (!x) in Java?
संपादित करें:
आम सहमति होने के लिए है कि एक अच्छा संकलक एक ही बात करने के लिए इन का अनुकूलन करना चाहिए लगता है। यह समझ में आता है और मुझे संदेह है, लेकिन - एक और अधिक अकादमिक प्रश्न पूछने के लिए - क्या यह व्यवहार वास्तव में कहीं भी अनिवार्य है, या यह "केवल" उचित काम है?
ध्यान रखें कि यह संकलक-विशिष्ट है। – danben
यहां दो प्रश्न हैं। पहला पूछता है कि जावा (बाइटकोड) में इसका प्रतिनिधित्व कैसे किया जाता है। दूसरा पूछता है कि प्रदर्शन और बाइटकोड में मतभेद हैं (मुझे लगता है कि आकार यहां संबंधित कारक है)। –
कोई संकलक जो ऑप्टिमाइज़ेशन को पहचान नहीं लेता है, वह बाजार पर बहुत दूर नहीं होगा;) –