初始化声明

时间:2014-10-19 06:29:13

标签: java for-loop

我正在阅读一本Java书,我遇到了一个有趣的for循环。它看起来像这样:

for(; (j>0) && (tmp < a[j-1]); j--)

我了解(j>0) && (tmp < a[j-1])是条件检查,j--是增量。但是,我没有得到初始化语句的位置。

3 个答案:

答案 0 :(得分:2)

您的示例中没有初始化语句。它是可选的。

j可能在循环之前声明并初始化。

答案 1 :(得分:1)

通常,你会在for循环的第一个语句中初始化j(这里是空的),因为它是一个循环索引,通常只在循环中使用。 Java for循环的标准语法也是for( initialization; termination condition; increment),但该语言只强制执行三个语句(中间一个是布尔表达式),因此您可以创建三个空语句for(;;)一个无限循环或你可以在那里放一些其他语句(除了中间表达式,其中有一个布尔表达式),如for(System.out.println("I was supposed to initialize here"); false && true; logger.log("Nope."))。当然,你不应该那样做,但这是合法的。

注意:如果代替第三个语句,有些语句也是非法的,比如变量声明,因为它是在每次迭代结束时执行的(有关合法循环语法的更多信息,请参阅this

我喜欢将for循环视为while循环的常见形式的简写,你想循环多次:

int i= 0;        // Initialization 
while (i< max){  // termination 
  // Do stuff
  i++;             // increment 
}

这有助于理解它对这些语句的作用。

答案 2 :(得分:0)

for(initialization; condition; increment)

它们都不是必须声明for循环。如果需要,您可以使用for(;;)之类的for循环。它将编译没有任何错误。

根据你的问题,j已经初始化了一些地方。因此它非常好。