首页 > 解决方案 > 为什么大括号不是强制性的(如下所示)?

问题描述

现在每个人都说,如果你想在一个控制语句中使用多个语句,必须将它们包含在大括号中。但是,如果您这样使用:

if(condition) //first if statement
if(condition) //if statement nested inside the first
System.out.println("test"); //statement inside the second if statement

代码应该导致错误,因为第二个 if 语句(没有分号)在第一个没有大括号的内部,这完成了第一个 if 语句的限制。因此 println 语句的范围应该在第一个 if 语句之外。因此上面的代码应该等价于

if(condition) {
    if(condition) 
}
System.out.println("test"); 

但事实并非如此。第一个代码运行成功。为什么?

标签: javasyntax

解决方案


因为条件语句包括它限定的语句。

大括号不是if语句语法的一部分。它的语法很简单:

 "if" "(" <expression> ")" <statement>

或者

"if" "(" <expression> ")" <statement> "else" <statement>

一种类型的语句是块语句,其语法是:

"{" <statement>... "}"

where<statement>...表示“零个或多个<statement>s”。

块语句可以包括 if 语句(或任何其他类型的语句)。但它不能把一个声明切成两半。而且if (condition)只是陈述的一半。


推荐阅读