首页 > 解决方案 > 当 >= 运行时,Java 是否隐式检查 > 和 ==?

问题描述

当我在代码中使用“>=”时,Java 会自动检查“==”和“>”吗?

我问这个问题的原因是因为在这样的 for 循环中:

for(int i = 0; i<N; i++){
    if(a > b) //do something
    else if(a == b) //do something different
}

这样做更有效率

for(int i = 0; i<N; i++){
    if(a >= b){
        if(a > b) //do something
        else // do the thing you would do for a == b
    }
}

if a>=b 不单独检查 a==b 和 a>b。

这是因为在第二个 for 循环中,您检查条件 1 或 2 次,而对于第一个 for 循环,您总是检查条件 2 次。

我意识到时差可以忽略不计,但我只是好奇。

标签: javaoperators

解决方案


对于这两种情况,Java 虚拟机具有单独的指令if_icmpeq(等于)、if_icmpge(大于或等于)和if_icmpgt(大于)。是否会更高效,实际上取决于 CPU 架构;x86 确实有一个JGE(如果大于或等于则跳转)指令。


推荐阅读