【发布时间】:2018-06-22 15:53:54
【问题描述】:
以下代码没有给出编译错误Unreachable statement。
if(true)return;
int x;
多年来我一直认为这是因为编译器不太关注给定的条件。
今天发现编译器理解条件,
int x;
if (true) {
x = 0;
}
int y = x;
因为如果不是这会导致另一个编译错误variable x might not have been initialized。事实上,它可以完美地编译和运行。所以,
java 编译器是否理解if 语句中给出的条件?
【问题讨论】:
-
我认为 Java 会评估常量表达式,它“理解”那些。当然,其他表达式必须在运行时计算。
标签: java if-statement compiler-errors compiler-construction conditional-statements