不使用花括号为什么我们不能在UserID
循环之后使用声明性语句?
使用Curley括号,它可以实现:
while
如果没有花括号,则会发生编译时错误:
while(true){
int u =89;
}
答案 0 :(得分:2)
语法上的原因是@Enumerated(EnumType.STRING)
语句之后的元素是while
,它包含所有可执行语句,特别是块,但不包括声明。
设计理由是它不会有任何意义。声明的变量的范围将在结束分号处终止,因此声明的变量在后续的程序文本中无法使用。
答案 1 :(得分:1)
我刚看了oracle.com上发现的Java语法:Chapter 18. Syntax。 (我希望这是适用于该问题的正确版本。)
Statement: Block ; Identifier : Statement StatementExpression ; if ParExpression Statement [else Statement] assert Expression [: Expression] ; switch ParExpression { SwitchBlockStatementGroups } while ParExpression Statement do Statement while ParExpression ; for ( ForControl ) Statement break [Identifier] ; continue [Identifier] ; return [Expression] ; throw Expression ; synchronized ParExpression Block try Block (Catches | [Catches] Finally) try ResourceSpecification Block [Catches] [Finally]
因此,您可以看到while
后跟ParExpression
(括号中的表达式)和Statement
。
有关
while(true){
int u =89;
}
Statement
身体之后的while
扩展为Block
,LocalVariableDeclarationStatement
可能会扩展为while(true)
int u =89; // compile time error
。
有关
Statement
while
LocalVariableDeclarationStatement
的身体无法扩展为Block
,因为其中没有<a href="abc> google </a>
。
因此,2 nd 根本不是Java语言的一部分(基于它的语法)。