int[] xs = new int[10];
// ...
for (int i = 0; i < 10; i++)
System.out.println(xs[i]);

というfor文が

int[] xs = new int[10];
// ...
for (int x: xs)
System.out.println(x);

と記述できる.これは良い. ただ,値を書き換えることはできないみたい.

import java.util.*;
public class ForLoop {
public static void main(String[] args) {
int[] xs = new int[3];
for (int x: xs) System.out.println(x);
for (int x: xs) x++;
for (int x: xs) System.out.println(x);
}
}

出力

000000

参照をもっているのではなく,値をもっているんですかね.