Java для каждого против обычного для - они эквивалентны?

Эти две конструкции эквивалентны?

char[] arr = new char[5];
for (char x : arr) {
    // code goes here
}

По сравнению с:

char[] arr = new char[5];
for (int i = 0; i < arr.length; i++) {
    char x = arr[i];
    // code goes here
}

То есть,если я помещу точно один и тот же код в тело обоих циклов (и они скомпилируются), будут ли они вести себя одинаково ???

Полный отказ от ответственности: это было вдохновлено другим вопросом (Java: эти 2 кода одинаковы). Мой ответ там оказался не таким, но я чувствую, что точная семантика Java для каждого имеет некоторые нюансы, на которые нужно обратить внимание.

Ответы на вопрос(4)

Ваш ответ на вопрос