Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java for循环的属性_Java - Fatal编程技术网

java for循环的属性

java for循环的属性,java,Java,考虑一个简单的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); bigArr

考虑一个简单的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);
 }
for(int x=0;x

我的观察结果是,即使我在bigArray的末尾添加其他对象,并且bigArray不断变大,for循环仍将终止。这是因为JRE在for循环开始之前修复了测试条件的值(在本例中为x 我看到OP的唯一问题是,对于类型为
List
的空
bigArray
,循环将终止,因为它必须在循环内调用
process
,以添加元素并增加
size
,因此for循环中的条件变为
true
,但
size
0
在那一点上。
如果列表不为空,则
x
将始终与最新长度进行比较,即包括在
过程中添加的对象


我假设
bigArray
属于
java.util.List

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


什么类型的
bigArray
?@Lewsterin:如果它是数组,就根本无法编译……这肯定不会以您给出的代码结束。请发布一个简短但完整的程序来演示这个问题,或者我很乐意发布一个简短但完整的程序来演示它不会失败(直到内存耗尽)。你错了。发布一些真实的代码来演示您的问题。当我尝试使用ArrayList重现此问题时,线程“main”java.lang.OutOfMemoryError中出现异常:java堆空间,正如预期的那样。但是,我希望在问题中提到的情况下不会出现异常。