-2

考虑一个简单的 java for 循环:

for (int x = 0; x < bigArray.size(); x++ ) {
     Someobject object = (Someobject) bigArray.get(x);
      process(object);
 }

private void   process(Someobject object) {
  Someobject newobject = moreProcessing(object);
  bigArray.add(newobject);
 }

我的观察是,即使我在 bigArray 的末尾添加其他对象并且 bigArray 不断变大,for 循环也会终止。这是因为 JRE 在 for 循环开始之前修复了测试条件的值(在本例中为 x < bigArray.size())并且从不更新此值吗?

4

2 回答 2

0

我在 OP 中看到的唯一问题是,对于空bigArray类型List,循环将终止,因为它必须process在循环内部调用以添加元素并增加,size因此 for 循环中的条件变为true但此时size0
如果列表不为空,x < bigArray.size()则将始终与最新长度进行比较,即包括添加的对象process
我认为这bigArray是类型java.util.List

于 2013-05-02T20:54:46.970 回答
0

在大多数情况下,测试条件将在每次迭代开始之前进行评估。

更多在这里

于 2013-05-02T20:54:53.100 回答