java - 当 >= 运行时,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 次。
我意识到时差可以忽略不计,但我只是好奇。
解决方案
对于这两种情况,Java 虚拟机具有单独的指令if_icmpeq
(等于)、if_icmpge
(大于或等于)和if_icmpgt
(大于)。是否会更高效,实际上取决于 CPU 架构;x86 确实有一个JGE
(如果大于或等于则跳转)指令。
推荐阅读
- html - 字体真棒图标不会显示?
- powershell - Powershell 脚本在文件资源管理器的控制台窗口中报告执行策略错误
- image - 无法通过电子应用程序发送附加到 discordjs 消息的图像
- c - 如何将每一行放入从 c 程序中的文件读取的数组中?
- c# - Automapper:UseDestinationValue 不适用于集合?
- c# - XAML 调整窗口大小和窗口内的所有元素
- android-studio - 无法在 Android Studio 中的现有颤振项目中打开不可为空的功能
- c - 如何让我的函数打印真假
- python - Python 索引错误:列表
- python - Python 中关于 re.split() 的正则表达式 [] vs ()