3 回答
TA贡献1798条经验 获得超7个赞
声明变量时(main在这种情况下):
Main main = new Main();
即使有副作用,也不算是陈述。为了使其成为正确的陈述,您应该这样做
new Main();
那为什么
... {
Main main = new Main();
}
允许吗?{ ... }是一个代码块,确实算作一条语句。在这种情况下,可以在声明之后但在右括号之前使用该main变量。一些编译器忽略了它实际上未被使用的事实,其他编译器对此发出警告。
TA贡献1942条经验 获得超3个赞
for 定义如下。
BasicForStatement:
for ( ForInitopt ; Expressionopt ; ForUpdateopt ) Statement
ForStatementNoShortIf:
for ( ForInitopt ; Expressionopt ; ForUpdateopt ) StatementNoShortIf
ForInit:
StatementExpressionList
LocalVariableDeclaration
ForUpdate:
StatementExpressionList
StatementExpressionList:
StatementExpression
StatementExpressionList , StatementExpression
块定义如下。
块是括号内的一系列语句,局部类声明和局部变量声明语句。
Block:
{ BlockStatementsopt }
BlockStatements:
BlockStatement
BlockStatements BlockStatement
BlockStatement:
LocalVariableDeclarationStatement
ClassDeclaration
Statement
语句定义如下。
Statement:
StatementWithoutTrailingSubstatement
LabeledStatement
IfThenStatement
IfThenElseStatement
WhileStatement
ForStatement
StatementWithoutTrailingSubstatement:
Block
EmptyStatement
ExpressionStatement
AssertStatement
SwitchStatement
DoStatement
BreakStatement
ContinueStatement
ReturnStatement
SynchronizedStatement
ThrowStatement
TryStatement
StatementNoShortIf:
StatementWithoutTrailingSubstatement
LabeledStatementNoShortIf
IfThenElseStatementNoShortIf
WhileStatementNoShortIf
ForStatementNoShortIf
根据规范,LocalVariableDeclarationStatement(未在块中声明)(查看块部分)无效。因此,以下for循环将报告您在问题中提到的编译时错误“ 不是语句 ”,除非您使用一对花括号。
for (int a=0;a<10;a++)
Main main=new Main();
TA贡献1886条经验 获得超2个赞
使用新语句创建单行块可能很有意义。没有意义的是将对刚刚创建的对象的引用保存在单行块内,因为您无法从for范围之外访问变量main。
也许(只是我的猜测),编译器会强迫您显式键入括号,因为在这种情况下,保持引用没有意义,希望您能意识到无用的引用。
添加回答
举报