简而言之,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++中的指针真的很像呢。