我在Android支持库中看到以下代码:
for (int i = 0, z = getChildCount(); i < z; i++)
使用z = getChildCount
而不仅仅是i < getChildCount()
有什么好处?
答案 0 :(得分:8)
声明多个内联变量是一种有问题的样式,但是赋值会在循环开始时计算一次计数并保存该值。如果操作很昂贵,它可以防止在每次迭代时花费时间计算它。
答案 1 :(得分:4)
在for循环中,它可以分为3个部分:
for(initialization ; terminating condition ; increment){
}
在for循环中,初始化只运行一次。但是每次迭代都会检查终止条件。因此,如果您将for循环写为:
for (int i = 0; i<count(); i++){
}
count()方法将在每次迭代时运行。
将其写成如下所示,确保count()
只会被调用一次,其原因当然是减少不必要的count()调用。
for (int i = 0, z = count(); i < z; i++)
上述内容也等同于将其编写为(除了z
现在不在循环范围内):
int z = count();
for (int i = 0; i < z; i++)