Integer.valueOf (1) позволяет кэшировать общие значения;для значений от -128 до 128 он всегда будет возвращать один и тот же объект, например, тогда как new Integer (1) всегда будет возвращать новый объект.Я бы сказал, что это хорошая практика - использовать это для всех производных от Number типов (Integer, Long, BigDecimal и т. Д.), Хотя это, вероятно, в любом случае делает автобокс под прикрытием.
Барт ван Хейкелом,разница между list.remove (1) и list.remove (new Integer (1)) заключается в следующем;list.remove (1) удалит объект с индексом 1 из списка, list.remove (new Integer (1)) удалит все объекты в списке, которые равны объекту Integer со значением один.Помните, что Коллекции не могут хранить примитивы, только объекты.