在Java中,我尝试使用迭代器更改int(原始类型)数组的值。但是,正如您在下面看到的那样,迭代器在进行打印时可以正常工作,但不能更改int []的值。虽然一个简单的使用索引的for循环可以完成这项工作,但我想知道为什么使用迭代器的for循环不用于更改值,但可以用于打印。谢谢public class playGround { public static void main(String[] args) { int[] array = new int[5]; System.out.println("using iterable: ---"); for (int num : array) { System.out.print(" " + num); num = 2; System.out.println(" " + num); } System.out.println(" after: ---"); for (int num : array) { System.out.print(" " + num); } System.out.println(); System.out.println("using index: ---"); for (int i = 0; i < array.length ; i++) { array[i] = i; } for (int num : array) { System.out.print(" " + num); } } }输出:using iterable: --- 0 2 0 2 0 2 0 2 0 2 after: --- 0 0 0 0 0using index: --- 0 1 2 3 4Process finished with exit code 0
3 回答
FFIVE
TA贡献1797条经验 获得超6个赞
您应该检查一下:每个循环的java如何工作。但是,如果您想对该主题进行深入的说明,则应该查看Oracle Javadoc参考。
无论如何,您都将在名为num的新变量中创建值的副本。因此,对变量的任何修改都不会应用于数组中的值。
温温酱
TA贡献1752条经验 获得超4个赞
在修改forEach循环中的元素时,实际上是在修改迭代器在中分配的值int num
,而不是原始数组的值。您得到的是文字,而不是指向数组中包含的对象的指针。
慕标5832272
TA贡献1966条经验 获得超4个赞
int num
是局部变量。为其分配值2仅在一次for
迭代的范围内对其进行更改。
更改原始数组的值的正确方法是像在堆中那样访问堆中的值array[i] = i
。
添加回答
举报
0/150
提交
取消