निम्नलिखित दो मामलों के बीच क्या अंतर है।
बूलियन परिणाम = ए || ख; या बूलियन परिणाम = Boolean.logicalOr (ए, बी);
मैं यहाँ उपरोक्त प्रश्न के बारे में मेरे अंक डाल करने के लिए करना चाहते हैं। यहाँ Boolean.logicalOr
public static boolean logicalOr(boolean paramBoolean1, boolean paramBoolean2)
{
return (paramBoolean1) || (paramBoolean2);
}
के शरीर तो हम देख सकते हैं कि यह a || b
अंततः कर रहा है है। लेकिन जब हम ||
के बजाय Boolean.logicalOr
का उपयोग करते हैं तो यह गैर शॉर्ट सर्किट बन जाता है। क्योंकि यह (Boolean.logicalOr
) (a || b)
के रूप में माना जाएगा जो a || b
से अलग है जब यह कुछ अन्य लॉजिकल ऑपरेटरों के साथ आता है।
उदाहरण-: कृपया नीचे दिए गए कोड का स्निपेट देखें ...
bCheck1 bCheck2 bCheck3 checkOR-Result checkLogicalOr-Result
true true true true true
true true false true true
true false true true true
true false false false false
false true true true false
false true false false false
false false true true false
false false true true false
हम इसे अलग परिणाम का उत्पादन कर रहा है जब भी यह अन्य तार्किक ऑपरेटर के साथ प्रयोग किया गया है देख सकते हैं:
public static void main(String[] args) {
boolean bCheck1 = false, bCheck2 = true, bCheck3 = false;
System.out.println("bCheck1\t" + "bCheck2\t" + "bCheck3\t" + "checkOR-Result\t" + "checkLogicalOr-Result");
bCheck1 = true; bCheck2 = true; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = true; bCheck2 = true; bCheck3 = false;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = true; bCheck2 = false; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = true; bCheck2 = false; bCheck3 = false;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = false; bCheck2 = true; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = false; bCheck2 = true; bCheck3 = false;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = false; bCheck2 = false; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
bCheck1 = false; bCheck2 = false; bCheck3 = true;
System.out.println(bCheck1 +"\t"+ bCheck2 +"\t"+ bCheck3 +"\t"+ checkOR(bCheck1, bCheck2, bCheck3) + "\t\t" + checkLogicalOr(bCheck1, bCheck2, bCheck3));
}
private static boolean checkOR(boolean bCheck1, boolean bCheck2, boolean bCheck3){
return bCheck1 && bCheck2 || bCheck3;
}
private static boolean checkLogicalOr(boolean bCheck1, boolean bCheck2, boolean bCheck3){
return bCheck1 && Boolean.logicalOr(bCheck2, bCheck3);
}
नीचे परिणामों कर रहे हैं। इसलिए ||
Boolean.logicalOr
या इसके विपरीत उपयोग करने के बारे में सावधान रहने की आवश्यकता है। जाहिर है Boolean.logicalOr
||
से अधिक पठनीय है। लेकिन प्रत्येक व्यक्ति का अपना महत्व है और इसका उपयोग नीचे के रूप में किया जा सकता है।
if(bCheck1 && bCheck2 || bCheck3)
को if(bCheck1 && Boolean.logicalOr(bCheck2, bCheck3))
द्वारा प्रतिस्थापित नहीं किया जा सकता है हालांकि if(bCheck1 && (bCheck2 || bCheck3))
से if(bCheck1 && Boolean.logicalOr(bCheck2, bCheck3))
को प्रतिस्थापित करना निश्चित रूप से एक अच्छा विचार होगा।
जावडोक क्या कहता है? क्या इसमें एक '@ देखें' संदर्भ है जो सहायक हो सकता है? –
कार्यात्मक रूप से, वे समान हैं, लेकिन कृपया अपने कोड में 'Boolean.logicalOr (ए, बी)' न लिखें। जब आपके पास कोड लिखने के लिए कई, कार्यात्मक रूप से समान तरीके हैं, तो आपको हमेशा सबसे अधिक पठनीय चुनना चाहिए। – VGR