问题:我只想问2个问题,如果我在java中写下2个代码,那么哪个在cpu周期方面更快?为什么?有人告诉我,第一个选项在cpu周期方面是不正确的,因为检查了2个条件,即是和!
boolean flag = true;
//OPTION ONE
if(!flag) {
//error
} else {
//got the answer
}
//OPTION TWO
if(flag) {
//got the answer
} else {
//error
}
答案 0 :(得分:7)
在现代JVM实现上存在没有实际差异。
编译器会做正确的事情,不用担心。实际上,如果它可以证明标志在编译时总是具有常量值true,那么它将完全消除检查和不可达分支。