Сравнение
studentId==student.getId()
будет работать, но выкинет NullPointerException
, если student
равно null
.
Как правило, автобокс предпочитает примитивы, т.е. он будет конвертироватьот Integer
до int
, где это возможно, а не наоборот.Ваш пример показывает одну хорошую причину для этого, так как равенство для ссылочных объектов сложно.Таким образом, возможно:
studentId==student.getId().intValue()
быть истинным, а
new Integer(studentId)==student.getId()
- ложным, поскольку, хотя они имеют одинаковое значение, они не являются одним и тем же объектом.