帮我看一下这个Java数组程序,我不理解int[] foo = arr[0] 和 foo = arr[1]为什么指向不同

2025-04-06 05:42:12
推荐回答(1个)
回答1:

1/程序:

public class TwoDimArray2 {
public static void main(String[] args){
int [][] arr = {{1,2,3},{4,5,6}};
int [] foo = arr[0];
System.out.println("1 **");
for(int i=0 ;i System.out.print(foo[i]+" ");
}
System.out.println();
foo=arr[1];
System.out.println("2 **");
for(int i=0;i System.out.print(foo[i]+" ");
}
System.out.println();
}
}

2/运行结果:

1 **
1 2 3 
2 **
4 5 6

3/问题:不理解int[] foo = arr[0] 和 foo = arr[1]为什么指向不同?

int[] foo = arr[0] :实际是初始化foo数组,并给foo数组分配了内存空间,然后赋初值arr【0】;

foo = arr[1]:实际是因为已经开辟了foo的内存空间,并且初始化为数组类型格式,那么foo作为数组名就代表了这一片内存空间的地址,即将arr二维数组的第二个元素赋值给foo代表的那一块数组内存空间。