JAVA何时比较评估为布尔值?在运行时或编译时?

时间:2017-11-18 14:37:27

标签: java boolean comparison

在Java中,比较何时评估为布尔值?它是在运行时还是在编译时? 例如,想象一下:

int x = 6; 
if (x > 7) { doSth(); }

编译后它将在字节码中表示为“x> 7”,或者它将表示为布尔值“false”?

1 个答案:

答案 0 :(得分:0)

这取决于编译器。

有些编译器会尽量聪明,并在可能的情况下在编译时计算表达式。此类编译器会认识到,在if语句时,x只能是6,因此x < 7将始终为假。他们甚至可以删除由if语句保护的块。

但是,编译器没有义务这样做。简单的编译器可能不会执行任何此类操作,并且整个代码将进入字节码,尽管它不可​​能被执行。