2013-05-08 8 views
5

Boolean nesnelerle çalışırken equals(Boolean) ve == kullanımının farklı sonuçlar döndüreceği bir durum var mı?Boolean.TRUE == myBoolean vs. Boolean.TRUE.equals (myBoolean)

Boolean.TRUE == myBoolean; 

Boolean.TRUE.equals(myBoolean); 

Burada ilkel türleri düşünmüyorum, yalnızca Boole nesneleri.

+2

Birden çok Boolean örneğini denediniz mi? –

+0

'myBoolean1 == myBoolean2' her ikisi de eşittir? – Edd

+0

İşte bu yüzden şu soruyu sordum: Boolean a1 = true; Boole a2 = true; System.out.println (a1 == a2); '. Çıktının "true" değeri – Edd

cevap

7

ne dersiniz:

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

(her ikisi the same reason as any other type of objects için, sahte baskı).

+0

neden yanlış yazdırılıyor? açıklayabilir misin? – muneebShabbir

+2

'yeni Boolean (true) == Boolean.TRUE', sorunu daha da iyi gösterecektir. –

+0

yanlış çünkü nesneleri == 'işareti ile karşılaştırıyoruz. – muneebShabbir

2

O ==myBoolean çünkü sabitler birinden kaynaklanabileceğini olmayabilir, ancak bu durumda == daima false neden olacaktır, new Boolean(boolValue) olarak inşa edilmiş kullanmak tehlikeli olabilir. Sen güvenilir sonuçlar veren == ne de katılan equals ne ile sadece

myBoolean.booleanValue() 

kullanabilirsiniz. null -değerlerini de karşılamanız gerekiyorsa, equals yaklaşımından daha iyi bir şey yoktur. Eğer Nesneleri karşılaştırdığımızda

+0

Bu ilkel değere geri dönmesine rağmen. – Aquillo

+1

@Aquillo Bu bir sorun gibi geliyor. Neden sorun olur? OP'nin ifadelerinden birinin sonucunun aynı ilkel boole olduğunu unutmayın. –

+0

Benim için bir problem yerine olası bir çözüm olurdu. OP, sorusunu, ilkellerin işlenmesini tartışmak olmadığını belirtti. – Aquillo

0

== sadece her zaman ilk false Bu durumda o.equls(Object ob)

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

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

kullanmalıdır ilkel türleri
için çalışır. Koşul doğruysa sadece ikinci. Baskılar:

equals 
İlgili konular