clone does a "shallow" copy. That is, the outermost array is duplicated, but the values stored in it are unchanged. So if you have A1 = { B1, B2, B3 } and clone that into A2, A2's initial contents will be { B1, B2, B3 }. If you change A1 to { C1, B2, B3 } then A2 will remain unchanged, but if you change the contents of B1 (without replacing it) then A2 will "see" that change.
To accomplish what you want you must loop through the outer array and clone the elements of that outer array (which are the inner arrays).
Pidgin Java:
int[][] A2 = A1.clone();
for (int i = 0; i < A2.length; i++) {
A2[i] = A2[i].clone();
}