Второй раз сталкиваюсь с проблемой и не могу понять почему выдаёт ошибку. Я эту задачу решил используя обычный for. Но почему при вводе числа более размера массива с использованием улучшенного for выдаёт java.lang.ArrayIndexOutOfBoundsException? Если можно, то по подробнее, пожалуйста.
public class Solution {
    public static void main(String[] args) throws Exception {
        int[] array = initializeArray();
        int max = max(array);
        System.out.println(max);
    }

    public static int[] initializeArray() throws IOException {
        int[] list = new int[20];
        for (int i = 0; i < 20; i++) {
            list[i] = Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
        }
        return list;
    }

    public static int max(int[] array) {
        int maxValue = array[0];
        for (int i : array) {
            if (maxValue < array[i]) {
                maxValue = array[i];
            }
        }
        return maxValue;
    }
}