Каждый элемент ArrayList<int[]>
является ссылкой на массив целых чисел. Если вы добавите один и тот же массив дважды (как вы делаете), он будет повторен в списке. Изменение элемента массива int будет отражаться при каждом его появлении в ArrayList. Чтобы иметь разные массивы, вам нужно выделить отдельные массивы. Что-то вроде этого подойдет:
int[] a = new int[] {0,0};
ArrayList<int[]> b = new ArrayList<int[]>();
b.add(a.clone()); // add a distinct array
a[0] = 1;
a[1] = 1;
b.add(a);
Тогда содержимое b будет {[0,0], [1,1]}.