几个月前,我开始学习自己的 Java基础知识(几年来对PHP
熟悉的业余水平)。
为了练习,我使用了 OCA Java SE 8程序员1学习指南,并给出了一个示例考试题,使我对{{ 1}},无法在 Java文档中找到。
我不明白为什么允许回答 E 并进行编译。
我曾在Netbeans 10(JDK 11)中尝试评估警告提示,但并没有使我理解基本原理。
还尝试将要编译的多个组合(仅警告if-statement
)。
Empty statement
if (true) ; {;;{}{}{}} ;;;;;;;;
if (true) ;;{}{{}{}{}}; {;;{}{}{}} ;;;;;;;;
问题:以下哪些语句不能编译?
A。 if (true) ;;{}{{}{}{}}; {;;{}{}{}}
B。 if (true) ;
C。 if (true) {}
D。 if (true) {;}
E。 if (true) {;;}
F。 if (true) ; {} ;
(=正确答案)
请帮助! 预先感谢。
答案 0 :(得分:2)
我不明白为什么允许答案
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
语句。第三和第四行是if
语句之后的语句。
答案 1 :(得分:0)
答案 E 将编译,因为在Java中允许使用符号;
。在这种情况下,if
语句的主体为空,没有意义,但这是有效的。
来自java specification 14.6. The Empty Statement:
空语句不执行任何操作。 空声明:
;
空语句的执行总是正常完成。
{}
只是Java中允许的空代码块。