Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java for(…:…)循环在复制数组时的作用是什么_Java_Arrays - Fatal编程技术网

Java for(…:…)循环在复制数组时的作用是什么

Java for(…:…)循环在复制数组时的作用是什么,java,arrays,Java,Arrays,当我阅读教程时,我发现了以下代码。。但是下面的代码有一处我不明白 谁能从下面的部分描述一下发生了什么 for(String old : oldArray){ System.out.println(old); } 这是完整的代码 public class Main { public static void main(String[] args) { String[] oldArray = {"one","two"}; String[] n

当我阅读教程时,我发现了以下代码。。但是下面的代码有一处我不明白

谁能从下面的部分描述一下发生了什么

for(String old : oldArray){
    System.out.println(old);
}
这是完整的代码

public class Main {    
    public static void main(String[] args) {

        String[] oldArray = {"one","two"};
        String[] newArray = oldArray;

        newArray[0]= "three";

        for(String old : oldArray){
            System.out.println(old);
        }

        System.out.println("");

        for(String latest : oldArray){
            System.out.println(latest);
        }

    }
}
所有这些

for(String old : oldArray){
    System.out.println(old);
}
要做的是循环遍历
oldArray
的条目,逐个打印出来。相当于

for (int i=0; i<oldArray.length; i++) {
    System.out.println(oldArray[i]);
}
for(inti=0;i这是Java中的一个循环。它是迭代数组中所有元素的简短版本

因此,您要做的是迭代数组并打印每个元素

我认为在这种情况下,它只是用来验证输出是否正确

讽刺的是,代码根本不执行数组复制

public static void main(String[] args) {

    String[] oldArray = {"one","two"};
    String[] wrongCopy = oldArray;
    String[] correctCopy = (String[]) oldArray.clone();

    for(String xi : oldArray){
        System.out.println(xi);
    }
    System.out.println("---");
    for(String xi : wrongCopy){
        System.out.println(xi);
    }
    System.out.println("---");
    for(String xi : correctCopy){
        System.out.println(xi);
    }

    System.out.println("--- after modifications ---");

    wrongCopy[0]= "three";
    oldArray[1]= "four";

    for(String xi : oldArray){
        System.out.println(xi);
    }
    System.out.println("---");
    for(String xi : wrongCopy){
        System.out.println(xi);
    }
    System.out.println("---");
    for(String xi : correctCopy){
        System.out.println(xi);
    }

}


如您所见,如果您修改
oldArray
ErrorCopy
的元素,它们将出现在“两个”数组中
对数组进行实际复制,但对其父数组的修改不敏感。

您运行它是为了查看它的功能吗?您的问题到底是什么?您的代码没有复制数组。但是,无论如何,您从未使用过
新数组。@CommuSoft您确定您的编辑反映了OP的意图吗?如果我们假设第二个循环实际上应该在
newArray
上迭代,那么这可能是一个演示,表明复制对数组的引用不会复制该数组。但是如果您确定这不是问题的全部内容,您可能还应该删除arracopy标记。@5gon12eder:原始标题建议您提供帮助正在复制数组。但问题是:有人能描述一下(…:…)
构造的
部分会发生什么情况吗?谢谢大家的评论..很抱歉标题不好:(为什么是向下投票?它准确地回答了这个问题。你等于一个枚举数,但更像是一个迭代器。@PeterRader代码做了同样的事情,它使用了OP更可能熟悉的语言功能。这是迄今为止解释for each循环的最简单的方法。你甚至可以将“old”改为更具描述性的东西,如“oldRow”。只是一个细节,但让它更清晰一点。@chiastic security现在您在编辑中删除了与枚举数的比较,所以我向上投票。