int [][] matrix = {
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 1},
{0, 1, 0, 0}
};
//1번
int [][] arr1 = new int[matrix.length][];
for(int i = 0; i < arr.length; i++) arr[i] = Arrays.copyOf(matrix[i], matrix.length);
//2번
int [][] arr2 = new int[matrix.length][matrix.length];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
arr1[i][j] = matrix[i][j];
}
}
arr[0][0] = 1;
arr1[0][0] = 1;
System.out.println(Arrays.deepToString(matrix));
System.out.println(Arrays.deepToString(arr1));
System.out.println(Arrays.deepToString(arr2));
결과값
[[0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [0, 1, 0, 0]] //matrix [[1, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [0, 1, 0, 0]] //arr1 [[1, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [0, 1, 0, 0]] //arr2
*매트릭스 자체를 수정하는 것은 부작용이 발생할 가능성이 있음.