Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大括号和分号if语句上的编译器行为_Java_If Statement_Curly Braces - Fatal编程技术网

Java 大括号和分号if语句上的编译器行为

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);;{}{{

几个月前,我开始自学Java基础知识(在业余水平上熟悉
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中尝试了第三行和第四行编译,即使没有前两行。