Java 带大括号的语句无效
有人能告诉我为什么这在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
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();
}