Porównywanie obiektów

Porównywanie obiektów
R1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

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

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

gdzie

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

Wynikiem jest:

Kopiuj
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:

Kopiuj
System.out.println("b1 == b2 WYNIK: "+(b1 == b2));
Kopiuj
b1 == b2 WYNIK: false
  • Rejestracja: dni
  • Ostatnio: dni
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.