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

在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 0

using index: ---

 0 1 2 3 4

Process finished with exit code 0


慕容森
浏览 274回答 3
3回答

FFIVE

您应该检查一下:每个循环的java如何工作。但是,如果您想对该主题进行深入的说明,则应该查看Oracle Javadoc参考。无论如何,您都将在名为num的新变量中创建值的副本。因此,对变量的任何修改都不会应用于数组中的值。

温温酱

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

慕标5832272

int num是局部变量。为其分配值2仅在一次for迭代的范围内对其进行更改。更改原始数组的值的正确方法是像在堆中那样访问堆中的值array[i] = i。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java