循环终止分配之间不同

时间:2011-08-11 14:01:55

标签: loops for-loop

以下2个循环之间有什么区别

for(int i = 0, n = array.length; i < n; i++)
    //do something

for(int i = 0; i < array.length; i++)
    //do something

循环是否计算第二个循环中每次迭代的数组长度?

2 个答案:

答案 0 :(得分:3)

第一个表单只评估表达式array.length一次,并在一个额外的局部变量(n)中记住它。在我使用的大多数语言中,无论如何都要发现数组的长度非常快,所以后一种形式是首选。

答案 1 :(得分:0)

这完全取决于我们在这里处理的语言和数据结构。它看起来像array.length是一个成员变量,因此它只是被返回而不是计算但它可能是一个属性,因此可能,但可能不是,每次都重新计算。