क्या जावा में एक बूलियन को नकारने का एक बेहतर तरीका है यदि एक साधारण इफ-बाकी की तुलना में?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
क्या जावा में एक बूलियन को नकारने का एक बेहतर तरीका है यदि एक साधारण इफ-बाकी की तुलना में?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
जवाबों:
theBoolean = !theBoolean;
!!bool == !(!(bool)) == bool
।
--
ऑपरेटर (वास्तव में, उनमें से दो, दो ++
ऑपरेटरों के साथ ) को परिभाषित करती है, लेकिन एक !!
ऑपरेटर को परिभाषित नहीं करती है । यदि आप चाहें -(-(integer))
तो दोनों -
वर्णों के बीच सफेद स्थान का उपयोग कर सकते हैं । लेकिन सफेद जगह की परवाह किए बिना !!
दो !
ऑपरेटरों के रूप में पर्स ।
theBoolean ^= true;
यदि आपका चर चार अक्षरों से अधिक लंबा है तो कम कीस्ट्रोक्स
संपादित करें : जब Google खोज शब्दों के रूप में उपयोग किया जाता है तो कोड उपयोगी परिणाम देता है। उपरोक्त कोड नहीं है। उन लोगों के लिए जिन्हें इसकी आवश्यकता है, यह यहाँ वर्णित के रूप में बिटवार XOR है ।
theBoolean = !theBoolean;
याtheBoolean = theBoolean ? false : true;
"स्पष्ट" तरीका (अधिकांश लोगों के लिए)
theBoolean = !theBoolean;
"सबसे छोटा रास्ता" (ज्यादातर समय)
theBoolean ^= true;
"सबसे दृश्य" तरीका (सबसे अनिश्चित रूप से)
theBoolean = theBoolean ? false : true;
theMethod( theBoolean ^= true );
चूंकि असाइनमेंट ऑपरेटर हमेशा वही देता है जो असाइन किया गया है, यह बिटवाइज़ ऑपरेटर के माध्यम से वैल्यू को टॉगल करता है, और फिर मेथड कॉल में उपयोग किए जाने वाले नए असाइन किए गए मान को वापस करता है।
C
निश्चित रूप से, लेकिन Java
इसमें बूलियन और पूर्णांक को मिलाने की अनुमति नहीं है ( while(1)
जावा में ऐसी चीजें संभव नहीं हैं)।
यदि आप बूलियन NULL मान का उपयोग करते हैं और उन्हें गलत मानते हैं, तो यह प्रयास करें:
static public boolean toggle(Boolean aBoolean) {
if (aBoolean == null) return true;
else return !aBoolean;
}
यदि आप बूलियन NULL मान नहीं सौंप रहे हैं, तो यह प्रयास करें:
static public boolean toggle(boolean aBoolean) {
return !aBoolean;
}
ये सबसे साफ हैं क्योंकि वे विधि हस्ताक्षर में इरादा दिखाते हैं, की तुलना में पढ़ना आसान है ! ऑपरेटर, और आसानी से डिबग किया जा सकता है।
प्रयोग
boolean bTrue = true
boolean bFalse = false
boolean bNull = null
toggle(bTrue) // == false
toggle(bFalse) // == true
toggle(bNull) // == true
बेशक, यदि आप ग्रोवी या एक भाषा का उपयोग करते हैं जो विस्तार विधियों की अनुमति देता है, तो आप एक एक्सटेंशन रजिस्टर कर सकते हैं और बस कर सकते हैं:
Boolean b = false
b = b.toggle() // == true
Boolean
और वास्तव में विधि के भीतर टॉगल करें (लेकिन अभी भी कुछ अस्पष्ट)।
"जावा इनवर्ट बूलियन फंक्शन" की खोज करते समय यह उत्तर आया। नीचे दिए गए उदाहरण कुछ स्थिर विश्लेषण उपकरणों को ब्रांचिंग तर्क के कारण विफल होने से रोकेंगे। यह उपयोगी है यदि आपको एक बूलियन को पलटना चाहिए और व्यापक इकाई परीक्षणों का निर्माण नहीं किया है;)
Boolean.valueOf(aBool).equals(false)
या वैकल्पिक रूप से:
Boolean.FALSE.equals(aBool)
या
Boolean.FALSE::equals
Boolean.FALSE::equals
थोड़ा सा लंबोदा लिखने के बजाय एक मैपिंग फ़ंक्शन को पारित कर सकते हैं
यदि आप कुछ विशेष रूप से पेशेवर नहीं कर रहे हैं, तो आप हमेशा एक Util वर्ग का उपयोग कर सकते हैं। पूर्व, एक वर्ग के लिए एक परियोजना से एक उपयोग वर्ग।
public class Util {
public Util() {}
public boolean flip(boolean bool) { return !bool; }
public void sop(String str) { System.out.println(str); }
}
तो बस एक Util ऑब्जेक्ट बनाएँ
Util u = new Util();
और वापसी के लिए कुछ हैSystem.out.println( u.flip(bool) );
यदि आप एक ही चीज़ का बार-बार उपयोग करने वाले हैं, तो एक विधि का उपयोग करें, और विशेष रूप से यदि यह परियोजनाओं के पार है, तो एक Util class बनाएं। Dunno उद्योग मानक क्या है। (अनुभवी प्रोग्रामर मुझे सही करने के लिए स्वतंत्र महसूस करते हैं)
वर्ग BooleanUtils
एक बूलियन की उपेक्षा का समर्थन करता है। आप इस वर्ग को कॉमन्स-लैंग: कॉमन्स-लैंग में पाते हैं
BooleanUtils.negate(theBoolean)
इससे पहले:
boolean result = isresult();
if (result) {
result = false;
} else {
result = true;
}
उपरांत:
boolean result = isresult();
result ^= true;