>>124
浅いコピー
 int[][] array = new int[3][3];
 int[][] copy = new int[3][];
 copy[0] = array[0];
 copy[1] = array[1];
 copy[2] = array[2];
array[0][1] = 1; とかすると copy[0][1] が 1 に書き換わってしまう。

深いコピー
 int[][] array = new int[3][3];
 int[][] copy = new int[3][3];
 for(int i = 0 ; i < array.length ; i++){
  for(int j = 0 ; j < array[i].length ; j++ ){
   copy[i][j] = array[i][j];
  }
 }
array[0][1] = 1; とかしても copy[0][1] が 1 に書き換わってしまうような事は無い。