在Java中,比较何时评估为布尔值?它是在运行时还是在编译时? 例如,想象一下:
int x = 6;
if (x > 7) { doSth(); }
编译后它将在字节码中表示为“x> 7”,或者它将表示为布尔值“false”?
答案 0 :(得分:0)
这取决于编译器。
有些编译器会尽量聪明,并在可能的情况下在编译时计算表达式。此类编译器会认识到,在if
语句时,x
只能是6
,因此x < 7
将始终为假。他们甚至可以删除由if
语句保护的块。
但是,编译器没有义务这样做。简单的编译器可能不会执行任何此类操作,并且整个代码将进入字节码,尽管它不可能被执行。