在Java中,时序中的两个循环存在差异:
for (int i=1; i<11; ++i)
{
// do stuff
}
和
for (int i=100; i<111; ++i)
{
// do stuff
}
答案 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次 - 而且可读性较差恕我直言......