Здесь int 0 автоматически упаковывается в целую сумму:
Integer sum = 0;
Здесь значения распакованы, так как унарный оператор плюс применяется только к int:
sum += n;
Здесь не происходит распаковка, когда вы перебираете целые числа:
for(Integer n : numbers)
Распаковка в цикле for может произойти, если вы сделаете (например,):
for(int n : numbers)
См. Автобокс и распаковка для очень похожих примеров и объяснений.