我开始学习JAVA并试图理解有关数组的东西。因此,在下面的代码中,arr1
的元素已分配给arr2[1]
,而在第二个循环中,arr2[row][col]
已递增。
我只是在用调试器进行调整,并意识到arr1
的内容也随着arr2[row][col]
一起增加。
这可能是一个虚假的问题,但我真的无法理解,你能详细说明那里的逻辑吗?
public static void main(String[] args){
int[] arr1 = { 1, 2, 3, 4};
int[][] arr2 = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
arr2[1] = arr1;
for (int row = 0; row < arr2.length; row++) {
for (int col = 0; col < arr2[row].length; col++){
System.out.print( arr2[row][col] + " " );
arr2[row][col]++;
}
System.out.println("");
}
}
答案 0 :(得分:1)
arr2 [1]是对arr1的引用 因此,当你在arr2 [1]中增加一个数字时,它也反映在arr1中。
Java对象变量是引用,因此arr2 [1]只指向与arr1相同的地址。 你可以找到很多文章:
您的代码,声明一个数组:
int[] arr1 = {1, 2, 3, 4};
声明一个多维数组(数组数组):
int[][] arr2 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
将arr2的第二个数组(即:arr2 [1])分配给arr1 :
arr2[1] = arr1; // {1, 2, 3, 4}
答案 1 :(得分:1)
这里
int[] arr1 = { 1, 2, 3, 4};
int[][] arr2 = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
arr2[1] = arr1;
您正在更改arr2的第二个元素作为arr1的值 所以
arr2 = { {1, 2, 3}, { 1, 2, 3, 4}, {7, 8, 9} };
是对的!
,在第二个循环中,arr2 [row] [col]递增。
是的,你增加了那些,但是该操作的结果没有被分配给任何东西,所以这些变化正在迷失......
答案 2 :(得分:0)
您正在设置 arr2 [1] 引用变量 arr1 。因此,当您修改 arr2 [1] 时,您正在修改 arr1 的值。
如果要将arr1的值设置为arr2 [1],请使用:
arr2[1] = arr1.clone();
方法克隆返回值,而不是引用。
希望这会有所帮助。问候。