Java如何知道/评估两个int
值的比较;
例如:
int a=5;
int b=10;
如何评估a > b
或a == b
或a < b
请详细说明。
答案 0 :(得分:6)
JVM解释诸如
之类的指令icmpge (Compare Greater than or Equal To)
进行比较。由平台特定的JVM决定如何在您选择的平台上执行此操作。
所以你可以说比较是虚拟机的原生
答案 1 :(得分:3)
if (a > b) {
// a is bigger
} else if (a == b) {
// they are equal
} else {
// a is smaller.
}
编辑:回答这个后续问题:
它如何知道它更重要 比如果&gt; b返回true
这取决于你的意思“它”。
Java(编程语言)什么都不知道。在任何意义上,它都是一种具有意义的语言......不是一种能够提供知识的东西。
Javac(编译器)将Java代码转换为一系列JVM字节码,这些字节码与程序源代码的含义相同。那些字节代码说的是这样的:
Java(命令)解释字节码,或者JIT将它们编译为本机代码,然后执行本机代码。
在本机代码级别,一系列指令可能会执行以下操作:
使用从逻辑门构建的ALU在硬件级别执行减法
等等到硅的水平。
答案 2 :(得分:2)
Java依赖于CPU的功能,它将具有允许条件执行路径的指令,具体取决于比较两个寄存器的结果。
鉴于Java正在虚拟机中执行,现在还有一个抽象层次。
所以要进一步研究你的答案:首先阅读CPU,寄存器,分支等。然后阅读Java JVM。
答案 3 :(得分:2)
如果您正在寻找如何比较代码中的值,Stephen C的答案会说明如何做到这一点。
如果你对实际机器的比较感兴趣,肯定有很多种类,就像djna建议的那样。
当调用Tim描述的Java正确的字节码时,这是计算机可以进行比较的一种方式:
让我们用二进制思考;
5 = 0000 0101
10 = 0000 1010
(注意:我遗漏了一些零只是为了保持这个简单)
由于二进制值是从右开始合并的2的倍数,因此很容易进行比较;
当然,这种检查可以更模糊,更确定地更复杂,但性能更好,但这就是它在基本机器级别上的工作方式。