2012-01-11 18 views
55

मैं कुछ नकली OCJP प्रश्नों पर देख रहा था। मैं वास्तव में एक भयानक वाक्यविन्यास में आया था। संदेश यह है:! = और = के बीच क्या अंतर है! जावा में?

class OddStuff { 
    public static void main(String[] args) { 
     boolean b = false; 
     System.out.println((b != b));// False 
     System.out.println((b =! b));// True 
    } 
} 

क्यों != और =! के बीच उत्पादन परिवर्तन?

+4

नोट अगर आप 'TRUE' ख को असाइन कि, तो दोनों अवास्तविक लौटाते। –

+16

पर्याप्त व्हाइटस्पेस उतना ही बुरा नहीं है जितना कि बहुत अधिक सफेद जगह –

+0

समान प्रोग्रामर जावा और सी ++ लिख रहा है। एक नज़र डालें http://stackoverflow.com/questions/21029174/whats- यह- ऑपरेटर: पी –

उत्तर

110

सवाल सिर्फ भ्रामक अंतर के साथ आप के साथ खेल रहा है।

b != b सामान्य != (बराबर नहीं) तुलना है।

दूसरी ओर:

b = (!b) 

इस प्रकार यह दो ऑपरेटरों है:

b =! b बेहतर जो पार्स किया गया है के रूप में b = !b के रूप में लिखा है।

  1. पहले उलटा b
  2. तो यह b वापस करने के लिए आवंटित।

असाइनमेंट ऑपरेटर असाइन किए गए मान देता है। इसलिए, (b =! b) सत्य का मूल्यांकन करता है - जो आप प्रिंट करते हैं।

+4

सही और अधिक सही यह है (बी =! बी) बनाम (बी! = बी) – Neutralizer

+2

मुझे नहीं पता था कि असाइनमेंट इस तरह से किया जाना चाहिए। – prometheuspk

+1

@ Prometheus87 हां, आप कथन के अंदर असाइनमेंट डाल सकते हैं। – Mysticial

9

b=!b एक असाइनमेंट है। यह !b को b प्रदान करती है और अभिव्यक्ति परिणामस्वरूप मूल्य है, जो true है मूल्यांकन करता है।

3

ख =! बी

आप एक असाइनमेंट कर रहे हैं, आप कह रहे हैं कि बी का मूल्य होना चाहिए! बी।

ख = b

अगर बी से बी

10

b != b मतलब है ! (b == b) अलग है आप पूछ रहे हैं: b == b के विपरीत।

b =! b वास्तव में एक असाइनमेंट b = !b है। यह b के मूल्य को टॉगल कर रहा है। एक असाइनमेंट अभिव्यक्ति के मूल्य का मूल्यांकन करता है, इसलिए यह !b (b के मान को बदलने के साथ) का मूल्यांकन करेगा।

संबंधित मुद्दे