首页 > 解决方案 > 无法在我的 for-each 循环中将“i+2”写为后置条件 [Java]

问题描述

有人可以向我解释为什么我可以在 for-each 循环中遍历 List<> 时将“i+2”写为后置条件,但在遍历 Array 时必须写“i=i+2”吗?

    for(int i = 0; i < numbers.length; i+2)
    {
        numbers[i] = 2;
        System.out.println(numbers[i]);
    }

标签: javaarraysforeach

解决方案


ForUpdate必须是 a StatementExpressionList,即 s 的列表StatementExpression

i+2是表达式,但不是语句表达式。

语句表达式可以非正式地 (*) 被认为是可能具有副作用的表达式,因此它们单独存在于语句中是有意义的。i+2没有副作用,所以评估它没有意义。


(*) 非正式地,因为method1() + method2()可以有副作用,因为methodN()可以有副作用;然而,它不是一个语句表达式,因为这里的“主要”表达式——加法——本身没有副作用。

如果这for (;; method1(), method2()) { ... }是您在ForUpdate.


推荐阅读