Tôi không tìm thấy bất kỳ nội dung nào trong trang mà bạn đã tham chiếu có nghĩa là lặp lại không theo thứ tự. Bạn có thể đăng báo giá cụ thể không?
Trong mọi trường hợp, tôi thấy rằng mã này:
public static void main(String args[]) {
double a[] = new double[] { 0, 1, 2, 3 };
int result = 0;
for (double i : a) {
result += i;
}
dịch ngược để kiểu cũ vòng lặp:
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);
}
}
Tất nhiên, đó không phải là giống như một bảo lãnh, nhưng đồng rất ít nhất là out-of-order iteration trên một mảng sẽ là rất lạ và dường như đi ngược lại thực hiện cảm giác thông thường rõ ràng.
Nguồn
2009-03-18 21:12:25
Nó có thể là nhanh hơn để phân chia các yếu tố và sợi vòng lặp. Một số trình biên dịch đã được unroll và vectorize vòng làm toán. Đó là không đúng thứ tự. Chủ đề có thể là điều tiếp theo. –