为什么第一个代码报告所需的结果,而第二个代码不报告(Java初学者)
public class p1 {
public static void main(String[] args) throws IOException{
int[] a = new int[100];
int i = 0 ;
for(int element1 : a){
element1 = i++;
System.out.println(element1);
}
}
}
结果0、1、2、3,......,99 第二个版本:-
public class p1 {
public static void main(String[] args) throws IOException{
int[] a = new int[100];
int i = 0 ;
for(int element1 : a){
element1 = i++;
}
for(int element2 : a){
System.out.println(element2);
}
}
} 结果0,0,0,0,.....,0
答案 0 :(得分:2)
这是因为未更新数组:
for(int element1 : a){
element1 = i;
a[i++] = element1; //change array element's value to see the updated value
}
for(int element2 : a){
System.out.println(element2);
}
这适用于两个代码段(均未更新数组)。
只是一个注释:在这种情况下,for循环更有意义(而不是for-each):
for(int i = 0; i < a.length; i++){
a[i] = i;
}
答案 1 :(得分:1)
根据您的问题,似乎您假设更改element1
将修改数组中的值。实际上并非如此。实际上发生的是,element1
包含相同的值作为数组中的对应值-从某种意义上说,它是它的“副本”。因此,当您设置element1
时,您要做的就是设置element1
,不是数组中的相应值。
答案 2 :(得分:0)
您没有为数组分配数字。在第一个示例中,这无关紧要,因为您正在打印element1
,只需将其分配给特定编号即可。但在第二个示例中没有。