2013-05-08 3 views
5

क्या ऐसी स्थिति है जहां equals(Boolean) और ==Boolean ऑब्जेक्ट्स से निपटने के दौरान अलग-अलग परिणाम लौटाएंगे?Boolean.TRUE == myBoolean बनाम Boolean.TRUE.equals (myBoolean)

Boolean.TRUE == myBoolean; 

Boolean.TRUE.equals(myBoolean); 

मैं यहां पर प्राचीन प्रकार के बारे में नहीं सोच रहा हूं, बस बूलियन ऑब्जेक्ट्स।

+2

क्या आपने 'बुलीयन' के कई उदाहरणों के साथ प्रयास किया है? –

+0

'myBoolean1 == myBoolean2' जहां दोनों बराबर सच हैं? – Edd

+0

यही कारण है कि मैंने सवाल पूछा: 'बूलियन ए 1 = सत्य; बूलियन ए 2 = सत्य; System.out.println (a1 == a2); '। आउटपुट "सत्य" – Edd

उत्तर

7

कैसे के बारे में:

System.out.println(new Boolean(true) == new Boolean(true)); 
System.out.println(new Boolean(true) == Boolean.TRUE); 

(दोनों झूठे प्रिंट, the same reason as any other type of objects के लिए)।

+0

क्यों गलत प्रिंट करता है? क्या तुम समझा सकते हो? – muneebShabbir

+2

'नया बूलियन (सत्य) == बूलियन.TRUE' इस मुद्दे को और भी बेहतर दिखाएगा। –

+0

इसकी झूठी है क्योंकि हम ऑब्जेक्ट की तुलना '==' चिह्न से कर रहे हैं? – muneebShabbir

2

यह उपयोग करने के लिए == क्योंकि myBoolean स्थिरांक में से एक से उत्पन्न हुआ नहीं है, लेकिन new Boolean(boolValue) के रूप में निर्माण किया गया है, जो मामले में == हमेशा false में परिणाम होगा खतरनाक होगा। तुम बस

myBoolean.booleanValue() 
== है और न ही equals शामिल साथ

उपयोग कर सकते हैं, विश्वसनीय परिणाम दे रही है। यदि आपको null -वृत्त भी पूरा करना होगा, तो आपके equals दृष्टिकोण से बेहतर कुछ भी नहीं है।

+0

नहीं है, हालांकि यह आदिम मूल्य पर वापस आ जाएगा। – Aquillo

+1

@Aquillo आप इसे एक समस्या की तरह ध्वनि बनाते हैं। यह एक समस्या क्यों होगी? ध्यान दें कि ओपी के अभिव्यक्तियों का परिणाम एक ही आदिम बुलियन है। –

+0

मेरे लिए यह एक समस्या के बजाय एक संभावित समाधान होगा। हालांकि ओपी ने कहा कि उनका सवाल प्राइमेटिव्स के प्रसंस्करण पर चर्चा नहीं करना है। – Aquillo

0

== केवल आदिम प्रकार
के लिए काम करता है जब आप वस्तुओं की तुलना आप हमेशा o.equls(Object ob)

0
 if(Boolean.TRUE == new Boolean(true)){ 
      System.out.println("=="); 
     } 

     if(Boolean.TRUE.equals(myBoolean)){ 
      System.out.println("equals");; 
     } 

का उपयोग करना चाहिए इस मामले पहले एक झूठ है में। अगर स्थिति सच है तो केवल दूसरा। प्रिंट:

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