Mat2 [] [] = Mat - >正在改变其中一个意图改变另一个?

时间:2013-12-09 23:58:10

标签: java

我要问的是(例如下面这段代码),一旦你声称它们是平等的或者我在这里错过了某些东西,对象是否确实对彼此产生了这种直接影响?

我现在能找到的解决方案是在for循环中将每个部分从一个矩阵到另一个矩阵相等,是否有更高效/更舒适的方法(在我是对的情况下)关于以上述方式相互影响的物体??

公共类矩阵{

public static void main(String[] args) {
    boolean mat[][] = {
            {true,true,true},
            {true,true,true},
            {true,true,true}
    };
    boolean mat2[][] = mat;
    aaa(mat,mat2);

}
public static void aaa(boolean mat[][], boolean mat2[][]){
    mat[0][0] = false;
    System.out.println(mat2[0][0]); //gives false
    mat2[0][1] = false;
    System.out.println(mat[0][1]); //gives false
}

}

1 个答案:

答案 0 :(得分:2)

这一行

boolean mat2[][] = mat;

不会创建2D数组的副本,它只会创建引用同一数组的另一个引用。您通过两个引用访问同一个数组,因此通过第一个数组设置的false与从第二个数组获得的false相同。