Ответ 1
Здесь есть простой трюк.
Вы не можете думать об этом только с логической логикой. Используя это, эта комбинация...
-
a
меньше или равноb
, а -
b
меньше или равноa
, а -
a
не равноb
... никогда не вернется true
.
Однако оператор !=
сравнивает ссылки, если его операнды являются объектами.
Итак, следующее возвращается true
:
Integer a = 1;
Integer b = new Integer(1);
System.out.println(a<=b && b<=a && a!=b);
Что происходит здесь: a
, поскольку ссылка на объект не равна b
как ссылка на объект, хотя, конечно, они имеют равные целочисленные значения.