在Java中for循环之前或之内的初始化

时间:2012-12-17 15:16:30

标签: java for-loop

请告诉我这两段代码的区别是什么:

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

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

这些初始化i - 增量变量的方法之间有什么区别吗?它会影响到什么吗?

4 个答案:

答案 0 :(得分:5)

差异是变量i的范围。

在第一个中,i在for循环之外是可见的,而在第二个循环中,它不是。

答案 1 :(得分:1)

如果是一个你可以在for循环范围的外侧使用i变量。 万一你不能这样做。只能用于for循环范围。

答案 2 :(得分:1)

在这两种情况下,变量都被定义一次(没有重大的性能或内存问题)。差异在于范围和表现。在第一个案例i将在for语句的范围之外可用。

第一种情况很有用,例如,如果你想找到一个元素的特定索引(很难找到更好的替代方法),或者你想迭代直到满足某个条件,然后,知道你的循环停在哪个索引。

答案 3 :(得分:0)

The second one is idiomatic。第一个不是,因此违反了the principle of least astonishment

如果您需要在i循环之前或之后访问for,请仅使用第二个。但是,我在这段代码中看不到任何暗示是这种情况。