花括号和分号 if 语句的编译器行为
compiler behavior on curly braces and semicolon if statement
几个月前开始自学Java基础知识(业余水平熟悉PHP
好几年)
为了练习,我使用 OCA Java SE 8 Programmer 1 学习指南 并给出了一个示例试题,这让我对 使用if-statement
中的花括号和分号 并且在 Java 文档 .
中找不到
我不明白为什么允许回答 E 并编译。
我已经尝试在 Netbeans 10 (JDK 11) 中评估警告和提示,但并没有让我理解基础。
还尝试将编译的多个组合(仅警告 Empty statement
)。
if (true) ; {;;{}{}{}} ;;;;;;;;
if (true) ;;{}{{}{}{}}; {;;{}{}{}} ;;;;;;;;
if (true) ;;{}{{}{}{}}; {;;{}{}{}}
问题:下面哪个语句不能编译?
A. if (true) ;
B. if (true) {}
C.if (true) {;}
D. if (true) {;;}
E. if (true) ; {} ;
F. All statements will compile
(=正确答案)
请帮忙!
提前致谢。
回答E会编译,因为符号;
在java中是允许的语句。在这种情况下 if
语句只有空体,没有任何意义,但它是有效的。
来自java specification 14.6. The Empty Statement:
An empty statement does nothing.
EmptyStatement:
;
Execution of an empty statement always completes normally.
{}
只是一个空代码块,在 java 中也是允许的。
I do not understand why answer E
is allowed and compiles.
在 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
语句之后的语句。
几个月前开始自学Java基础知识(业余水平熟悉PHP
好几年)
为了练习,我使用 OCA Java SE 8 Programmer 1 学习指南 并给出了一个示例试题,这让我对 使用if-statement
中的花括号和分号 并且在 Java 文档 .
我不明白为什么允许回答 E 并编译。
我已经尝试在 Netbeans 10 (JDK 11) 中评估警告和提示,但并没有让我理解基础。
还尝试将编译的多个组合(仅警告 Empty statement
)。
if (true) ; {;;{}{}{}} ;;;;;;;;
if (true) ;;{}{{}{}{}}; {;;{}{}{}} ;;;;;;;;
if (true) ;;{}{{}{}{}}; {;;{}{}{}}
问题:下面哪个语句不能编译?
A. if (true) ;
B. if (true) {}
C.if (true) {;}
D. if (true) {;;}
E. if (true) ; {} ;
F. All statements will compile
(=正确答案)
请帮忙! 提前致谢。
回答E会编译,因为符号;
在java中是允许的语句。在这种情况下 if
语句只有空体,没有任何意义,但它是有效的。
来自java specification 14.6. The Empty Statement:
An empty statement does nothing. EmptyStatement:
;
Execution of an empty statement always completes normally.
{}
只是一个空代码块,在 java 中也是允许的。
I do not understand why answer
E
is allowed and compiles.
在 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
语句之后的语句。