Это тоже интересно:
Object t = 3;
t.equals( 3 ); // true
3 == t; // true
Но
Object h = 128;
h.equals( 128 ); // true
128 == h; // false
.equals
будет работать, так как значение будет сравниваться. ==
Будет работать, используя ссылки, но только с -128 до 127, потому что механизм автобокса использует внутренний пул для хранения «наиболее часто используемых» ссылок.
Достаточно странно: o == 3
потерпит неудачу во время компиляции.