Я был удивлен, увидев, что следующий фрагмент кода Java скомпилирован и запущен:
for(final int i : listOfNumbers) {
System.out.println(i);
}
где listOfNumbers - это массив целых чисел.
Я думал, что окончательные объявления назначаются только один раз. Создает ли компилятор объект Integer и изменяет ли то, на что он ссылается?