【发布时间】:2018-01-07 14:13:14
【问题描述】:
增强的 for 循环很奇怪。为什么
int size = 10;
Random random = new Random();
int[] scores = new int[size];
for (int score : scores) {
scores[score] = random.nextInt(size);
}
System.out.println(Arrays.toString(scores));
给我一个大部分为空的数组,其中只有第一个元素是随机数, 同时:
int size = 10;
Random random = new Random();
int[] scores = new int[size];
for (int i = 0; i < scores.length; i++){
scores[i] = random.nextInt(size);
}
System.out.println(Arrays.toString(scores));
给了我我想要的:一个由随机数字组成的 10 元素数组? 我认为这两个循环是相互替换的;但是当涉及到 Random() 时,它只是第一个被改变的元素?
【问题讨论】:
-
增强的 for 循环没有索引。你可以查看它相当于某种
Iterator<X> iter = iterable.iterator(); while (iter.hasNext()) { X element = iter.next(); }。这也是它支持Iterable类型的所有内容的原因。有些可迭代元素在每个定义中都没有索引。
标签: java arrays for-loop foreach