为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Java中使用for(int num:array)更改基本类型int数组的值?

如何在Java中使用for(int num:array)更改基本类型int数组的值?

慕容森 2021-05-07 15:18:44
在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的新变量中创建值的副本。因此,对变量的任何修改都不会应用于数组中的值。


查看完整回答
反对 回复 2021-05-26
?
温温酱

TA贡献1752条经验 获得超4个赞

在修改forEach循环中的元素时,实际上是在修改迭代器在中分配的值int num,而不是原始数组的值。您得到的是文字,而不是指向数组中包含的对象的指针。


查看完整回答
反对 回复 2021-05-26
?
慕标5832272

TA贡献1966条经验 获得超4个赞

int num是局部变量。为其分配值2仅在一次for迭代的范围内对其进行更改。

更改原始数组的值的正确方法是像在堆中那样访问堆中的值array[i] = i


查看完整回答
反对 回复 2021-05-26
  • 3 回答
  • 0 关注
  • 273 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信