In Java, the test
if (i==f && i.equals(f))
is nonsensical. Since i is an Integer and f is a Float, they will never be == (and, since they are incommensurate types, cannot legally be compared with ==). For reference types, the == operator evaluates to true only if the variables reference the same object, which they cannot do with objects of different types. Consequently, since i==f evaluates to false, the second part will never be evaluated because the && operator is a “short circuit” boolean operator.
I suppose if i and f were of some other type, this might be a way to check that the class’s equals() method was reflexive (as required by the spec, but there are always programming bugs). However, it would make more sense to have:
if (i != null && i.equals(f))
to avoid a potential NullPointerException.
2
solved What does this expression evaluate to? [closed]