कहते हैं कि मैं इस राशि की सुविधा देता है एक भी अंदर कई शर्तों के साथ जावा सौदा करता है। क्या जावा को बुल्स 1 और बूल 2 की जांच करने के लिए पर्याप्त स्मार्ट है यदि बूल 1 का गलत मूल्यांकन किया गया था? क्या जावा उन्हें बाएं से दाएं भी देखता है? मैं यह पूछ रहा हूं क्योंकि जब मैं उन्हें करने के लिए लेता हूं (बाएं सस्ता वाले लोगों से शुरू होता है) तब तक मैं अपने अंदर की स्थितियों को "सॉर्टिंग" कर रहा था। अब मुझे यकीन नहीं है कि यह मुझे कोई प्रदर्शन लाभ देता है क्योंकि मुझे नहीं पता कि जावा इसे कैसे संभालता है।कैसे यदि बयान
उत्तर
पर इस विकिपीडिया पृष्ठ पर एक नज़र डालें हाँ, जावा (अन्य मुख्यधारा भाषाओं के समान) का उपयोग करता है
आलसी मूल्यांकन
कम सर्किटिंग जो इसे यथासंभव कम मूल्यांकन करता है मतलब है।
इसका मतलब है कि निम्नलिखित कोड पूरी तरह से सुरक्षित है:
if(p != null && p.getAge() > 10)
इसके अलावा, a || b
कभी नहीं का मूल्यांकन करता है b
अगर a
true
मूल्यांकन करता है।
पुराने धागे को खोदने के लिए खेद है, लेकिन आपके पास "&& और" क्यों है? क्या आपका मतलब सिर्फ "&&" है? –
हां, जिसे शॉर्ट-सर्किटिंग कहा जाता है।
कृपया short-circuiting
क्या जावा को बुल्स 1 और बूल 2 को छोड़ने के लिए पर्याप्त स्मार्ट है यदि बूल 1 का गलत मूल्यांकन किया गया था?
यह स्मार्ट होने की बात नहीं है, इसकी भाषा में निर्दिष्ट एक आवश्यकता है। अन्यथा आप अभिव्यक्तियाँ लिख नहीं सकते थे।
if(s != null && s.length() > 0)
या
if(s == null || s.length() == 0)
BTW आप &
और |
यह हमेशा अभिव्यक्ति के दोनों पक्षों का मूल्यांकन करेंगे का उपयोग करें।
कृपया look up जावा में &
और &&
के बीच का अंतर (समान |
और ||
पर लागू होता है)।
&
और |
, सिर्फ तार्किक ऑपरेटरों रहे हैं, जबकि &&
और ||
सशर्त तार्किक ऑपरेटरों, जो आपके उदाहरण में इसका मतलब है कि
if(bool1 && bool2 && bool3) {
bool2
और bool3
अगर bool1
है झूठे, और
if(bool1 & bool2 & bool3) {
उनके मूल्यों के बावजूद सभी शर्तों का मूल्यांकन करेगा।
उदाहरण के लिए, यह देखते हुए:
boolean foo() {
System.out.println("foo");
return true;
}
if(foo() | foo())
foo
दो बार प्रिंट होगा, और if(foo() || foo())
- बस एक बार।
- 1. यदि/elif बयान
- 2. मामला बयान या यदि बयान दक्षता परिप्रेक्ष्य
- 3. हास्केल यदि बयान
- 4. यदि रेल में बयान
- 5. यदि बयान या
- 6. यदि उस्तरा में सब बयान
- 7. गतिशील एसक्यूएल (निष्पादित करें) यदि बयान
- 8. पायथन शैली: यदि बयान बनाम बूलियन मूल्यांकन
- 9. श/bash यदि किसी और बयान
- 10. यदि एक == सच या ख == सच्चा बयान
- 11. यदि एक लिंक के भीतर बयान जहां क्लॉज
- 12. बयान
- 13. बयान
- 14. सिद्धांत 2 - प्रश्न निर्माता सशर्त प्रश्न ... यदि बयान?
- 15. एसक्यूएल संग्रहित प्रक्रिया: यदि चर रिक्त नहीं है, अद्यतन बयान
- 16. CodeIgniter सक्रिय रिकॉर्ड, यदि में बयान जोड़ें> चयन() फ़ंक्शन
- 17. यदि एकाधिक मानों से मेल खाने वाले बयान
- 18. यदि कोई # सी में बयान मौजूद है तो और करें?
- 19. बयान
- 20. बयान
- 21. बयान
- 22. दो बयान एक और बयान
- 23. स्विच बयान
- 24. रनिंग बयान
- 25. ताला बयान
- 26. मैं कैसे करूँ तैयार बयान
- 27. एक बयान
- 28. क्यों इस जावास्क्रिप्ट 'अगर ... वरना ...' बयान में कोई तुलना बयान
- 29. बयान अगर एक-लाइनर, तो इसे कैसे परिवर्तित करें यदि-else-statement
- 30. उपयोग कैसे करें? : यदि रेजर और इनलाइन कोड ब्लॉक के साथ बयान
चूंकि आप इन परिवर्तनों के साथ प्रदर्शन में सुधार करने की कोशिश कर रहे हैं, क्या आपने शर्तों को आगे बढ़ाने से पहले और बाद में प्रदर्शन को मापने की कोशिश की है? एक तरफ, आपको यह बताने चाहिए कि तर्क वास्तव में नीचे वर्णित अनुसार शॉर्ट सर्किट किया जा रहा है, और दूसरी तरफ, यह आपको बताएगा कि बड़ी तस्वीरों में इन परिवर्तनों की परिमाण महत्वपूर्ण है या नहीं। – Douglas