java यह असाइनमेंट और समानता जांच के साथ कथन क्यों करता है, झूठी मूल्यांकन?




if-statement logic (4)

जावा अगर कथन कैसे काम करता है जब उसके पास असाइनमेंट और समानता जांच होती है तो एक साथ ??

public static void test() {
    boolean test1 = true; 
    if (test1 = false || test1 == false) {
        System.out.println("TRUE");
    } else {
        System.out.println("FALSE");
    }       
}

यह प्रिंटिंग गलत क्यों है?


अभिव्यक्ति को आपके विचार के तरीके से विश्लेषित नहीं किया गया है। यह

(test1=false) || (test1 == false)

इस मामले में परिणाम true , लेकिन

test1 = (false || test1 == false)

false || test1 == false का मूल्य false || test1 == false false || test1 == false अभिव्यक्ति पहले गणना की जाती है, और यह false , क्योंकि test1 गणना में जाने के लिए true सेट है।

इस तरह से इसका विश्लेषण किया गया कारण यह है कि || की precedence == ऑपरेटर की तुलना में कम है, लेकिन असाइनमेंट ऑपरेटर की प्राथमिकता से अधिक है =


यह मूल रूप से एक प्राथमिकता मुद्दा है। आप मान रहे हैं कि आपका कोड बराबर है:

if ((test1 = false) || (test1 == false))

... लेकिन ऐसा नहीं है। यह वास्तव में बराबर है:

if (test1 = (false || test1 == false))

... जो बराबर है:

if (test1 = (false || false))

(क्योंकि test1 साथ शुरू करने के लिए true है)

... जो बराबर है:

if (test1 = false)

जो अभिव्यक्ति के परिणामस्वरूप false होने के परिणामस्वरूप test1 को false मान निर्दिष्ट करता है।

ऑपरेटर प्राथमिकता की उपयोगी तालिका के लिए ऑपरेटरों पर जावा ट्यूटोरियल देखें।


(test1 = false || test1 == false) झूठी वापसी करता है, क्योंकि उनमें से दोनों झूठे हैं। (test1 = false || test1 == true) यह सच है क्योंकि उनमें से एक सत्य है


अभिव्यक्ति test1 = false || test1 == false test1 = false || test1 == false निम्नलिखित चरण में मूल्यांकन करेगा।

चरण: 1- test1 = false || test1 == false test1 = false || test1 == false // test1 = false || test1 == false प्राथमिकता सबसे अधिक है

चरण: 2- test1 = false || false test1 = false || false // ऑपरेटर || उच्च प्राथमिकता है

चरण: 3- test1 = false

चरण: 4- false

चूंकि अभिव्यक्ति का बूलियन मान गलत हो जाता है। इसलिए अन्य कथन निष्पादित किया जा रहा है।





logic