在编写循环时,我经常会对应该选择哪一个感到困惑。例如,
int sum;
for(int i=0; i<10; i++)
{
sum=0;
...
....
}
或者
for(int i=0; i<10; i++)
{
int sum=0;
...
....
}
比如说,变量只在这个循环中需要。在程序的后期部分不需要它。我需要在循环开始时变量sum的值为0。 哪一个更好的做法?在循环开始时重新初始化变量或重新声明它?哪一个更有效率?
答案 0 :(得分:6)
如果在循环之外声明一个变量而不是在循环之外使用它,编译器会在循环中移动声明。
这意味着没有理由在这里比较效率,因为你最终会得到JVM为这两种方法运行的完全相同的代码。
以下代码:
int sum;
for(int i=0; i<10; i++)
{
sum=0;
}
...编译后成为这个:
for(int i = 0; i < 10; i++)
{
int sum = 0;
}
答案 1 :(得分:1)
这使我们专注于循环概念中的performance and optimization
代码。
从维护角度来看,第二种情况更好。在尽可能narrowest scope
的同一位置声明和初始化变量。不要在declaration
和initialization
之间留下空洞。局部变量的范围应始终尽可能小。参见链接
答案 2 :(得分:0)
在循环内重新初始化它会在每次启动循环时将sum值设置为零,无需重新声明。答案是效率相同。