Если вы распечатаете, что он делает, вы увидите сами:
int[] a = {1, 2, 3,4,1};
System.out.println(Arrays.toString(a));
for (int n: a) {
System.out.print("a[" + n + "] = 0; -> ");
a[n] = 0;
System.out.println(Arrays.toString(a));
}
Вывод
[1, 2, 3, 4, 1]
a[1] = 0; -> [1, 0, 3, 4, 1]
a[0] = 0; -> [0, 0, 3, 4, 1]
a[3] = 0; -> [0, 0, 3, 0, 1]
a[0] = 0; -> [0, 0, 3, 0, 1]
a[1] = 0; -> [0, 0, 3, 0, 1]