java - 为什么大括号不是强制性的(如下所示)?
问题描述
现在每个人都说,如果你想在一个控制语句中使用多个语句,必须将它们包含在大括号中。但是,如果您这样使用:
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");
但事实并非如此。第一个代码运行成功。为什么?
解决方案
因为条件语句包括它限定的语句。
大括号不是if
语句语法的一部分。它的语法很简单:
"if" "(" <expression> ")" <statement>
或者
"if" "(" <expression> ")" <statement> "else" <statement>
一种类型的语句是块语句,其语法是:
"{" <statement>... "}"
where<statement>...
表示“零个或多个<statement>
s”。
块语句可以包括 if 语句(或任何其他类型的语句)。但它不能把一个声明切成两半。而且if (condition)
只是陈述的一半。
推荐阅读
- selenium - selenium / chronium 无法解决 recaptchas
- wordpress - 在 WordPress 中添加的通知是不可忽略的
- angular - 由于 chromedriver 与 chrome 的版本不匹配,角度中的 E2e 测试用例未运行
- ionic-framework - Angular CDK 虚拟滚动问题
- flutter - 如何在两个平台上都可以使用的支付网关
- c++ - Boost 1.74.0 Asio 执行器迁移问题
- c++ - 开关盒仅打印默认值
- android - 在新的控制台设计中,无法创建生产版本,也无法将 alpha 升级为生产版本
- pycharm - Pycharm:如何在根目录下更改和保存文件?
- sql - 如何解决“没有为'r'的第1列指定列”