Porównywanie obiektów

0

Witam, wiem, że do porównywania obiektów powinno używać się equals, dlatego zastanawia mnie jedna instrukcja

System.out.println("b2 == b2 == b1  WYNIK: " + (b2 == b2 == b1));

gdzie

b1= new Boolean("true"); b2=new Boolean("true");

Wynikiem jest:

b2 == b2 == b1  WYNIK: true

Wychodzi na to, że w tym przypadku prawidłowo porównuje obiekty. Nie powinno porównywać referencji do obiektów tak jak jest to w tym przypadku?
Wynik:

System.out.println("b1 == b2 WYNIK: "+(b1 == b2));
b1 == b2 WYNIK: false
3

b2 == b2 daje porównanie referencji i zwraca typ prosty typu boolean
potem masz przyrównanie typu prostego do typu obiektowego (true == b1) więc jest robiony unboxing i porównywanie wartości

//poprawiłem bool na boolean - @bogdans

1 użytkowników online, w tym zalogowanych: 0, gości: 1