На странице, на которую вы ссылаетесь, я не нашел ничего, что указывало бы на итерацию не по порядку. Можете ли вы опубликовать конкретную цитату?
В любом случае, я считаю, что этот код:
public static void main( String args[] ) {
double a[] = new double[] { 0, 1, 2, 3 };
int result = 0;
for ( double i : a ) {
result += i;
}
декомпилируется в циклы старого стиля:
public static void main(String args[])
{
double a[] = {
0.0D, 1.0D, 2D, 3D
};
int result = 0;
double ad[];
int k = (ad = a).length;
for(int j = 0; j < k; j++)
{
double i = ad[j];
result = (int)((double)result + i);
}
}
Конечно, это не то же самое, что гарантия, но по крайней мере неупорядоченная итерация по массиву была бы очень странной и, казалось бы, противоречила очевидной реализации здравого смысла.