3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
聲明變量時(shí)(main在這種情況下):
Main main = new Main();
即使有副作用,也不算是陳述。為了使其成為正確的陳述,您應(yīng)該這樣做
new Main();
那為什么
... {
Main main = new Main();
}
允許嗎?{ ... }是一個(gè)代碼塊,確實(shí)算作一條語句。在這種情況下,可以在聲明之后但在右括號(hào)之前使用該main變量。一些編譯器忽略了它實(shí)際上未被使用的事實(shí),其他編譯器對(duì)此發(fā)出警告。

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
for 定義如下。
BasicForStatement:
for ( ForInitopt ; Expressionopt ; ForUpdateopt ) Statement
ForStatementNoShortIf:
for ( ForInitopt ; Expressionopt ; ForUpdateopt ) StatementNoShortIf
ForInit:
StatementExpressionList
LocalVariableDeclaration
ForUpdate:
StatementExpressionList
StatementExpressionList:
StatementExpression
StatementExpressionList , StatementExpression
塊定義如下。
塊是括號(hào)內(nèi)的一系列語句,局部類聲明和局部變量聲明語句。
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
根據(jù)規(guī)范,LocalVariableDeclarationStatement(未在塊中聲明)(查看塊部分)無效。因此,以下for循環(huán)將報(bào)告您在問題中提到的編譯時(shí)錯(cuò)誤“ 不是語句 ”,除非您使用一對(duì)花括號(hào)。
for (int a=0;a<10;a++)
Main main=new Main();

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
使用新語句創(chuàng)建單行塊可能很有意義。沒有意義的是將對(duì)剛剛創(chuàng)建的對(duì)象的引用保存在單行塊內(nèi),因?yàn)槟鸁o法從for范圍之外訪問變量main。
也許(只是我的猜測),編譯器會(huì)強(qiáng)迫您顯式鍵入括號(hào),因?yàn)樵谶@種情況下,保持引用沒有意義,希望您能意識(shí)到無用的引用。
添加回答
舉報(bào)