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现在您在编辑中删除了与枚举数的比较,所以我向上投票。