简而言之,for each 适用于不改变数组,容器元素的场合,如果改变,必须用索引或者iterator.

例如:

A[] arrayA = new A[5];

for (A a : arrayA)

{

  a = null;

}

注意,即使java对象传递的是引用,这样写array中的元素仍不会改变。

因为这样相当于:

A a = arrayA[0];

a = null;

... ...

改变的只是引用a的指向,而不是arrayA[0]。

其实这样看,java引用和C,C++中的指针真的很像呢。