मेरा प्रश्न बहुत बुनियादी हो सकता है लेकिन फिर भी मुझे लगता है कि यह पूछने लायक है।और& (AND) और || (या) IF कथन
if(!partialHits.get(req_nr).containsKey(z) || partialHits.get(req_nr).get(z) < tmpmap.get(z)){
partialHits.get(z).put(z, tmpmap.get(z));
}
जहां partialHits
एक HashMap है: मैं निम्नलिखित कोड है। क्या होगा यदि पहला कथन सत्य है? जावा अभी भी दूसरे कथन की जांच करेगा? क्योंकि पहला कथन सत्य होने के लिए, हैश मैप में दी गई कुंजी नहीं होनी चाहिए, इसलिए यदि दूसरा कथन चेक किया गया है, तो मुझे NullPointerException
मिल जाएगा।
तो सरल शब्दों में, अगर हम निम्नलिखित कोड है
if(a && b)
if(a || b)
होगा जावा जांच b
अगर a
पहले मामले में गलत है और अगर a
दूसरे मामले में सही है?
क्या बिटवाई तुलना तुलना मौजूद हैं ताकि आप दोनों अभिव्यक्तियों का मूल्यांकन कर सकें? यानी अगर (str! = null | str.isEmpty())? (बेशक यह एक व्यावहारिक उदाहरण नहीं है, वास्तव में यह बेवकूफ है, लेकिन आपको विचार मिलता है) – Kezzer
जब तक अभिव्यक्तियों के साइड इफेक्ट्स नहीं होते हैं, शॉर्ट-सर्किट सेमेन्टिक्स तर्कसंगत रूप से पूर्ण मूल्यांकन के बराबर होते हैं। यही है, अगर ए सच है, तो आप जानते हैं कि बी बी का मूल्यांकन किए बिना बी बी सच है। एक बार जब यह अभिव्यक्ति के दुष्प्रभाव होते हैं तो यह एक फर्क पड़ता है। अन्य ऑपरेटरों के लिए, आप '*' और '+' को तार्किक 'और' और' या' के रूप में उपयोग कर सकते हैं; '((ए? 1: 0) * (बी? 1: 0)) == 1',' ((ए? 1: 0) + (बी? 1: 0))> 0'। आप 'xor' भी कर सकते हैं:' ((ए? 1: 0) + (बी? 1: 0)) == 1'। – outis
@ किज़ज़र: क्या वास्तव में बिटवाई तुलना है? मुझे लगता है कि यह एक 'बुलियन' (तार्किक) ऑपरेटर है। यह एक ही प्रतीक होने के बावजूद 'bitwise' (पूर्णांक) ऑपरेटर से अलग है ... –