当我在处理一些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];
}
}
那么,差异是什么?
答案 0 :(得分:3)
我知道他们有相同的功能
不太......
第二个示例包含两个包含相同值的不同对象。对一个的更新不会反映在另一个中。
第一个示例,您只有一个矩阵(至少在A=MainMatrix;
之后),以及两个引用。对A
的任何更新都将反映在MainMatrix
中(反之亦然)。
答案 1 :(得分:1)
在第一个代码段中,A
和MainMatrix
最终都会引用内存中的相同数组。在第二个片段中,您最终会得到两个包含相同值的不同数组。
答案 2 :(得分:0)
差异是,第一个是将A
退回到MainMatrix
,意味着A
和MainMatrix
引用相同的int[][]
。如果您修改MainMatrix
,则A
也会更改,因为它们会指向内存中的相同位置。
你的第二种方式是将MainMatrix
复制到A
,两者都是单独的,如果你改变一个,另一个保持不变,因为它们指向内存中的不同位置。