Java是否重新评估for循环标头中的整个布尔表达式?

时间:2014-06-06 03:34:29

标签: java performance for-loop expression

我正在编写一些代码来解决Project Euler上的问题,而且像往常一样,我必须遍历一系列数字。但是,部分游戏尽可能高效。我们以此代码为例:

for (int i = 1; i < Math.pow(10,6);i++){
    //code goes here    
    }

对于每次迭代,Java都会重新计算10 ^ 6吗?换句话说,这是否更有效?

for (int i = 1; i < 1000000;i++){
    //code goes here    
    }

1 个答案:

答案 0 :(得分:1)

好吧,试试吧:

for (int i=0;i<1000000;i++)
  

5046949

     

5314307

     

4619485

     

5045923

     

4397800

使用方法调用:

for (int i=0;i<Math.pow(10,6);i++)
  

221661393

     

222532742

     

239673896

     

216985460

     

221952869

嗯,所以Java每次都会重新计算方法。数字,因为它没有办法告诉该方法将随时间返回相同的值。

你也可以这样做:

for (int i=0;i<(int)1e6;i++)
  

4329548

     

4781644

     

4614867

     

4508642

     

4508642