Java 带大括号的语句无效

Java 带大括号的语句无效,java,syntax,Java,Syntax,有人能告诉我为什么这在Java中是有效的吗 for (int i= 1; i<11; i++){ Movie movie = randomMovie(); } for(inti=1;i检查这是否有效 Movie movie = null; for (int i= 1; i<11; i++) movie = randomMovie(); Movie=null; 对于(int i=1;i,因为Java语法禁止后者。相关语法规则如下: BasicForStat

有人能告诉我为什么这在Java中是有效的吗

for (int i= 1; i<11; i++){
       Movie movie = randomMovie();
}
for(inti=1;i检查这是否有效

Movie movie = null;
for (int i= 1; i<11; i++)
      movie = randomMovie();
Movie=null;

对于(int i=1;i,因为Java语法禁止后者。相关语法规则如下:

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

Statement:
    StatementWithoutTrailingSubstatement
    LabeledStatement
    IfThenStatement
    IfThenElseStatement
    WhileStatement
    ForStatement

StatementWithoutTrailingSubstatement:
    Block
    EmptyStatement
    ExpressionStatement
    AssertStatement
    SwitchStatement
    DoStatement
    BreakStatement
    ContinueStatement
    ReturnStatement
    SynchronizedStatement
    ThrowStatement
    TryStatement
请注意,以上内容不包括
LocalVariableDeclarationStatement

您可以在中找到完整的Java语法


假设问题。假设以下代码是有效的Java:

for (int i = 1; i < limit; i++)
     Movie movie = randomMovie();
System.out.println("The last movie is " + movie);
这也是一个错误。但要在语言语法中解决这个问题是很困难的。)



1-另一种选择是站不住脚的。在像Java这样的静态检查语言中,不能出现范围内变量仅根据早期执行路径存在的情况。如果
limit
为零,那么
movie
的值会是多少?

这一切都围绕着
movie
变量为零这一事实本地到该块。在第二个示例中,没有括号,无法添加更多的代码来使用
电影
,因此它是无效的。即使更改为
String x=new String();
您也会收到相同的错误,这是因为for循环(或while循环)可以立即控制语句类型不要包含声明声明。现在就有意义了。非常感谢:)
for (int i = 1; i < limit; i++)
     Movie movie = randomMovie();
System.out.println("The last movie is " + movie);
for (int i = 1; i < 11; i++){
     Movie movie = randomMovie();
}