以下2个循环之间有什么区别
for(int i = 0, n = array.length; i < n; i++)
//do something
for(int i = 0; i < array.length; i++)
//do something
循环是否计算第二个循环中每次迭代的数组长度?
答案 0 :(得分:3)
第一个表单只评估表达式array.length
一次,并在一个额外的局部变量(n
)中记住它。在我使用的大多数语言中,无论如何都要发现数组的长度非常快,所以后一种形式是首选。
答案 1 :(得分:0)
这完全取决于我们在这里处理的语言和数据结构。它看起来像array.length是一个成员变量,因此它只是被返回而不是计算但它可能是一个属性,因此可能,但可能不是,每次都重新计算。