循环差异

时间:2011-03-15 11:46:04

标签: java

在Java中,时序中的两个循环存在差异:

for (int i=1; i<11; ++i)
{
  // do stuff
}

for (int i=100; i<111; ++i)
{
  // do stuff
}

3 个答案:

答案 0 :(得分:5)

第二个循环将比第一个循环运行1次。

答案 1 :(得分:0)

第二个循环将比第一个循环执行一次,因为111-100 = 11和11-1 = 10.

如果您使用

for (int i=101; i<111; ++i)
{
  // do stuff
}

然后结果应该与第一个循环相同,时间顺序。当然,如果您实际使用

中的i,情况会有所不同
// do stuff

您的部分代码。

答案 2 :(得分:0)

字节码中至少有一个(微)差异:

i = 1将被翻译为ICONST_1,而
i = 100会产生BIPUSH 100

第一个是单个操作码,第二个是操作码后跟一个字节,必须加载并符号扩展到32位。第一个通常比第二个更有效,但我认为与整个循环(// do stuf)相比,差异是微不足道的。

第二个(for (int i=100; i<111; ++i))肯定应该首选,而不是:

for (int i=1; i<11; ++i)
{
  // do stuff with  (i + 100)
}  

它不仅速度慢 - 每次互动增加100次 - 而且可读性较差恕我直言......