当我查看教程时,我发现了这段代码..但是以下代码的一个地方我无法理解
任何人都可以描述从以下部分发生的事情
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);
}
}
}
答案 0 :(得分:4)
所有这一切
for(String old : oldArray){
System.out.println(old);
}
的作用是遍历oldArray
的条目逐个打印出来。它相当于
for (int i=0; i<oldArray.length; i++) {
System.out.println(oldArray[i]);
}
您提供的代码根本不进行任何阵列复制。
答案 1 :(得分:2)
这是Java中的for-each循环。它是迭代数组中所有元素的简短版本。
你这样做是迭代数组并打印每个元素。
我认为在这种情况下,它仅用于验证输出是否正确。
具有讽刺意味的是,代码根本不执行数组复制。
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
和wrongCopy
的元素,它们就会显示在&#34;两者上&#34;阵列。而.clone()
生成的数组的实际副本对其父项的修改不敏感。