【发布时间】:2017-05-05 20:15:28
【问题描述】:
我目前正在阅读 Downey 的 Think Java,它最近引入了增强的 for 循环。有人提到,增强的 for 循环在遍历数组时不考虑元素索引。我认为这不会抑制类似以下方法的工作:
public static double[] powArray(double[] a) {
for (double value : a) {
value = Math.pow(value, 2.0);
}
return a;
}
但是,它似乎确实如此(它所属的其余代码似乎很好)。请注意,当我运行以下命令时,此方法最终返回相同的数组:
System.out.println(Arrays.toString(powArray(a)));
我想我无法理解这里的问题是否在于我如何处理增强的 for 循环或数组引用。 提前致谢!
【问题讨论】:
-
你预计结果会是什么?
-
我认为它会返回一个包含平方元素的数组。
-
查看JLS,它说“增强的 for 语句等同于形式的基本 for 语句:”。您正在平方一个新变量,而不是数组元素。
-
我认为您应该考虑接受安迪·特纳的回答。 stackoverflow.com/a/43813175/1485527 。请参阅我编辑的答案,了解原因。