सबसे पहले, कुछ पृष्ठभूमि: मैं एक आईटी शिक्षक-इन-ट्रेनिंग हूं और मैं जावा के बुलियन ऑपरेटरों को अपनी 10 वीं कक्षा की कक्षा में लाने की कोशिश कर रहा हूं। मेरे शिक्षक-संरक्षक ने मेरे द्वारा तैयार की गई एक वर्कशीट को देखा और टिप्पणी की कि मैं उन्हें केवल एक & या का उपयोग करने दे सकता हूं संचालकों को निरूपित करना, क्योंकि वे "ऐसा ही करते हैं"।
मुझे & && के बीच अंतर के बारे में पता है।
& "बिट-ट्विडलिंग" करने के लिए पूर्णांक के बीच उपयोग के लिए एक बिटवाइज़र ऑपरेटर है।
&& एक सशर्त ऑपरेटर है जो बूलियन मूल्यों के बीच उपयोग के लिए है।
इस बात को साबित करने के लिए कि ये ऑपरेटर हमेशा "एक ही काम नहीं करते हैं" मैं एक उदाहरण खोजने के लिए निकलता हूं जहां बूलियन मूल्यों के बीच बिटवाइज़ का उपयोग करने से त्रुटि पैदा होगी। मुझे यह उदाहरण मिला
boolean bitwise;
boolean conditional;
int i=10, j=12;
bitwise = (i<j) | ((i=3) > 5); // value of i after oper: 3
System.out.println(bitwise+ " "+ i);
i=10;
conditional = (i<j) || (i=3) > 5 ; // value of i after oper: 10
System.out.println(conditional+ " "+ i);
i=10;
bitwise = (i>j) & (i=3) > 5; // value of i after oper: 3
System.out.println(bitwise+ " "+ i);
i=10;
conditional = (i>j) && (i=3) > 5; // value of i after oper: 10
System.out.println(conditional+ " "+ i);
इस उदाहरण से पता चलता है कि यदि अभिव्यक्ति के दूसरे छमाही तक किसी मूल्य को बदलना है, तो इससे परिणामों के बीच अंतर होगा, क्योंकि बिटवाइज़ एक उत्सुक ऑपरेटर है, जबकि सशर्त एक शॉर्ट सर्किट के रूप में व्यवहार करता है (दूसरे का मूल्यांकन नहीं करता है आधा, अगर पहली छमाही && के मामले में झूठी है और ||
मेरे पास इस उदाहरण के साथ एक मुद्दा है। जब आप इस पर एक तुलना करेंगे, तो आप उसी समय एक मूल्य क्यों बदलना चाहेंगे? यह कोड करने के लिए एक मजबूत तरीका नहीं लगता है। मैं हमेशा अपने उत्पादन कोड में एक ही लाइन में कई ऑपरेशन करने का विरोध करता रहा हूं। ऐसा लगता है कि कोई "कोडिंग काउबॉय" है, जिसमें कोई विवेक नहीं है क्योंकि उसके कोड की स्थिरता क्या होगी। मुझे पता है कि कुछ डोमेन में कोड को यथासंभव कॉम्पैक्ट होना चाहिए, लेकिन निश्चित रूप से यह सामान्य रूप से खराब अभ्यास है?
मैं && और || ओवर एंड | क्योंकि यह सॉफ्टवेयर इंजीनियरिंग में एक स्वीकृत कोडिंग कन्वेंशन है ।
लेकिन क्या कोई मुझे एक बेहतर, यहां तक कि वास्तविक दुनिया दे सकता है, उदाहरण के लिए एक सशर्त अभिव्यक्ति में बिटवाइज़ ऑपरेटर का उपयोग करना?