在Java中将矩阵分配给另一个矩阵

时间:2016-08-31 22:46:22

标签: java arrays matrix

当我在处理一些Java代码时,我认为这两个代码之间可能存在不同之处 我知道它们具有相同的功能,但我认为它们之间有一些不同之处。

这是第一个代码:

int[][] MainMatrix = new int[2][2];
int[][] A = new int[2][2];
MainMatrix[0][0]=100;
MainMatrix[0][1]=200;
MainMatrix[1][0]=300;
MainMatrix[1][1]=400;


A=MainMatrix;

这是第二个:

int[][] MainMatrix = new int[2][2];
int[][] A = new int[2][2];
MainMatrix[0][0]=100;
MainMatrix[0][1]=200;
MainMatrix[1][0]=300;
MainMatrix[1][1]=400;


for(int i=0;i<2;i++){
    for(int j=0;j<2;j++){
        A[i][j]=MainMatrix[i][j];
    }
}

那么,差异是什么?

3 个答案:

答案 0 :(得分:3)

  

我知道他们有相同的功能

不太......

第二个示例包含两个包含相同值的不同对象。对一个的更新不会反映在另一个中。

第一个示例,您只有一个矩阵(至少在A=MainMatrix;之后),以及两个引用。对A的任何更新都将反映在MainMatrix中(反之亦然)。

答案 1 :(得分:1)

在第一个代码段中,AMainMatrix最终都会引用内存中的相同数组。在第二个片段中,您最终会得到两个包含相同值的不同数组。

答案 2 :(得分:0)

差异是,第一个是将A退回到MainMatrix,意味着AMainMatrix引用相同的int[][]。如果您修改MainMatrix,则A也会更改,因为它们会指向内存中的相同位置。

你的第二种方式是将MainMatrix复制到A,两者都是单独的,如果你改变一个,另一个保持不变,因为它们指向内存中的不同位置。