为什么第一个if编译正确,而第二个编译失败?if(proceed) {int i;} // This compiles fine.if(proceed) int i;// This gives an error. (Syntax error on token ")", { expected after this token)
3 回答
慕容森
TA贡献1853条经验 获得超18个赞
来自Java语言规范。
区块:
{ BlockStatements opt }
BlockStatements:
BlockStatement
BlockStatements BlockStatement
BlockStatement:
LocalVariableDeclarationStatement
ClassDeclaration
语句
和
IfThen声明:
if(表达式)语句
似乎int i是一个LocalVariableDeclarationStatement,而不是一个Statement。因此它不起作用。
慕桂英4014372
TA贡献1871条经验 获得超13个赞
这是因为它不是有用的代码。如果您有一个不带大括号({})的if语句,则仅执行if之后的第一行/语句。因此,如果仅声明局部变量,则不能在其他任何地方使用它。因此,声明它绝对是多余的。
if(proceed){
int i= 0;
// variable i can be used here
//...
}
if (proceed) int i; // i can not be used anywhere as it is a local variable
添加回答
举报
0/150
提交
取消