问题描述
示例代码:
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是否针对基元精确定义的迭代顺序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!