在带打印语句的for循环内声明变量时出错

时间:2019-06-04 10:02:19

标签: java for-loop

我试图学习for循环的工作原理,所以我编写了这样的代码。

for(System.out.println("hi"),int i=0;i<5;System.out.println("yo"),i++) 
{
System.out.println("teapot");
}

通过这种方式我可以理解,何时执行for循环的哪一部分。但是我在第一行指出“ .class期望”时出现错误。也许这只是意味着,我无法在第一行中声明变量。因此,我对其进行了重新设计,现在它可以完美运行了。

int i;
for(System.out.println("hi"),i=0;i<5;System.out.println("yo"),i++) 
{
System.out.println("teapot");
}

但是我不明白为什么我不能在第一行中声明一个变量。

1 个答案:

答案 0 :(得分:6)

basic for loop的语法是:

BasicForStatement:
  for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement

BasicForStatementNoShortIf:
  for ( [ForInit] ; [Expression] ; [ForUpdate] ) StatementNoShortIf

ForInit:
  StatementExpressionList 
  LocalVariableDeclaration

换句话说:for的第一位可以包含statement expressions的列表或局部变量声明,但不能同时包含两者。

  • System.out.println("hi")是一个语句表达式(因为它是一个方法调用表达式);
  • int i=0不是语句表达式(因为它不是表达式);
  • i=0是一个语句表达式,因为它是一个赋值。