关于这段代码,只有两个问题.
package experimental;
import java.sql.Array;
public class foreachExp {
public int[] anArray = {1, 2, 3, 4, 5,};
public void foreachArray() {
for (int i : anArray) {
anArray[i] = i + 1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
for-each不能基于数组索引工作但实现迭代解决方案,int i变量将代表来自所提供数组的单个数据元素.所以在循环中,你有效地调用:
anArray[1] = 1 + 1;
anArray[2] = 2 + 1;
anArray[3] = 3 + 1;
anArray[4] = 4 + 1;
anArray[5] = 5 + 1;
Run Code Online (Sandbox Code Playgroud)
如您所见,anArray[5]将超出界限,因为数组的长度仅为5长(0-4)
如果你想改变这些值,你不要使用for-each循环(可能会使用Box某种类型的hacky来做它,但是使用数组它会很愚蠢).
所以使用数组,这将是明智的解决方案:
for (int i = 0; i < anArray.length; i++) {
anArray[i]++;
}
Run Code Online (Sandbox Code Playgroud)
正如你已经提到的那样