在循环中声明变量或仅重新分配它是否更有效?

时间:2014-10-15 05:18:18

标签: java performance loops initialization declaration

在编写循环时,我经常会对应该选择哪一个感到困惑。例如,

int sum;
for(int i=0; i<10; i++)
{
   sum=0;
   ...
   ....
}

或者

for(int i=0; i<10; i++)
{
   int sum=0;
   ...
   ....
}

比如说,变量只在这个循环中需要。在程序的后期部分不需要它。我需要在循环开始时变量sum的值为0。 哪一个更好的做法?在循环开始时重新初始化变量或重新声明它?哪一个更有效率?

3 个答案:

答案 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的同一位置声明和初始化变量。不要在declarationinitialization之间留下空洞。局部变量的范围应始终尽可能小。参见链接

Declaring variables inside or outside of a loop

答案 2 :(得分:0)

在循环内重新初始化它会在每次启动循环时将sum值设置为零,无需重新声明。答案是效率相同。