Java 大括号和分号if语句上的编译器行为
几个月前,我开始自学Java基础知识(在业余水平上熟悉Java 大括号和分号if语句上的编译器行为,java,if-statement,curly-braces,Java,If Statement,Curly Braces,几个月前,我开始自学Java基础知识(在业余水平上熟悉PHP,已经好几年了) 为了练习,我使用了OCA Java SE 8程序员1学习指南,并给出了一个示例考试问题,这让我对if语句中的大括号和分号的使用感到困惑,在Java文档中找不到 我不明白为什么允许回答E并编译。 我曾尝试在Netbeans 10(JDK 11)中评估提示中的警告,但并没有让我理解其基本原理。 还尝试将要编译的多个组合(仅对空语句发出警告)。 if(真);{;;{}{}{}} ;;;;;;;; if(true);;{}{{
PHP
,已经好几年了)
为了练习,我使用了OCA Java SE 8程序员1学习指南,并给出了一个示例考试问题,这让我对if语句中的大括号和分号的使用感到困惑,在Java文档中找不到
我不明白为什么允许回答E并编译。
我曾尝试在Netbeans 10(JDK 11)中评估提示中的警告,但并没有让我理解其基本原理。
还尝试将要编译的多个组合(仅对空语句发出警告)。
if(真);{;;{}{}{}} ;;;;;;;;代码>
if(true);;{}{{}{}{}}; {;;{}{}{}} ;;;;;;;;代码>
if(true);;{}{{}{}{}}; {;;{}{}{}}
问题:以下哪项语句不会编译?
A.if(真)代码>
B.if(true){}
C.if(true){;}
D.如果(真){;}
E.if(真);{} ;代码>
F.所有语句都将编译(=正确答案)
请帮忙!
提前感谢。答案E将编译,因为符号语句。在本例中,if
语句的主体是空的,没有意义,但它是有效的
发件人:
空语句不起任何作用。
清空状态:
代码>
空语句的执行始终正常完成
{}
只是java中允许的一个空代码块
看
我不明白为什么允许回答E
并编译
在Java中,一个代码>可以是语句终止符,也可以是空语句,具体取决于上下文
下面是如何解析选项E
中的(有效)Java代码:
if (true) // <-- "if" and its condition
; // an empty statement which is the "then" part of the "if"
{} // an (empty) block statement
; // an empty statement
if(true)//好的,我明白了。第三行和第四行与if语句无关。我在IDE中尝试了第三行和第四行编译,即使没有前两行。