В Java тест
if (i==f && i.equals(f))
бессмысленна. Поскольку i
является Integer
и f
является Float
, они никогда не будут ==
(и, поскольку они несоизмеримые типы, юридически не могут сравниваться с ==
). Для ссылочных типов оператор ==
оценивает значение true
, только если переменные ссылаются на один и тот же объект, который они не могут выполнять с объектами разных типов. Следовательно, поскольку i==f
оценивает false
, вторая часть никогда не будет оценена, потому что оператор &&
является булевым оператором «короткого замыкания».
Я полагаю, что если i
и f
были какого-то другого типа, это может быть способ, чтобы проверить, что equals()
метод Класс был рефлексивно (в соответствии с требованиями спецификации, но всегда программирования ошибок). Тем не менее, было бы больше смысла иметь:
if (i != null && i.equals(f))
, чтобы избежать потенциального NullPointerException
.
Что именно вы спрашиваете? – Eliel
Почему вы не пробовали? – Jens
У вас есть заявление о печати. почему бы не использовать это? – Rahul