Java是否针对基元精确定义的迭代顺序

Java是否针对基元精确定义的迭代顺序

本文介绍了Java是否针对基元精确定义的迭代顺序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

示例代码:

  int a [] = new int [] {0,1,2,3}; 
int result = 0;
for(int i:a)
result + = i;

循环保证迭代 a [0] a [1] a [2] a [3] 按顺序?我坚信,答案是肯定的,但 a>似乎没有明确的状态顺序。



得到了一个可靠的参考吗?

解决方案

  int [] array = a; 
for(int index = 0; index< a.length; index ++){
int i = array [index];
结果+ = i;

其中 array index 是编译器生成的标识符,与其他标识符(编译器生成的或其他标识符)不同,这些标识符位于增强的语句发生。 (在这里稍微解释变量名称)。

所以是的:订单是绝对有保证的。


Example code:

int a[] = new int[]{0, 1, 2, 3};
int result = 0;
for (int i : a)
    result += i;

Is the loop guaranteed to iterate across a[0], a[1], a[2], a[3] in that order? I strongly believe the answer is yes, but this page seems to not unambiguously state order.

Got a solid reference?

解决方案

According to the JLS, The enhanced for statement, your for-loop is equivalent to

int[] array = a;
for (int index = 0; index < a.length; index++) {
    int i = array[index];
    result += i;
}

"where array and index are compiler-generated identifiers that are distinct from any other identifiers (compiler-generated or otherwise) that are in scope at the point where the enhanced for statement occurs." (slightly paraphrasing the variable names here).

So yes: the order is absolutely guaranteed.

这篇关于Java是否针对基元精确定义的迭代顺序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 03:27