java int比较

时间:2009-11-09 07:37:24

标签: java

Java如何知道/评估两个int值的比较;

例如:

int a=5;
int b=10;

如何评估a > ba == ba < b

请详细说明。

4 个答案:

答案 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字节码,这些字节码与程序源代码的含义相同。那些字节代码说的是这样的:

    1. 将整数值'b'加载到表达式堆栈
    2. 将“a”的整数值加载到表达式堆栈
    3. 分支,如果表达式堆栈顶部的整数大于堆栈上的下一个整数
  • Java(命令)解释字节码,或者JIT将它们编译为本机代码,然后执行本机代码。

  • 在本机代码级别,一系列指令可能会执行以下操作:

    1. 从'a'的地址加载32位到寄存器1
    2. 从地址'b'加载32位到寄存器2
    3. 从寄存器2中减去寄存器1
    4. 分支,如果减法的结果为负
  • 使用从逻辑门构建的ALU在硬件级别执行减法

  • 等等到硅的水平。

答案 2 :(得分:2)

Java依赖于CPU的功能,它将具有允许条件执行路径的指令,具体取决于比较两个寄存器的结果。

鉴于Java正在虚拟机中执行,现在还有一个抽象层次。

所以要进一步研究你的答案:首先阅读CPU,寄存器,分支等。然后阅读Java JVM。

答案 3 :(得分:2)

如果您正在寻找如何比较代码中的值,Stephen C的答案会说明如何做到这一点。

如果你对实际机器的比较感兴趣,肯定有很多种类,就像djna建议的那样。

当调用Tim描述的Java正确的字节码时,这是计算机可以进行比较的一种方式:

让我们用二进制思考;

 5 = 0000 0101
10 = 0000 1010

注意:我遗漏了一些零只是为了保持这个简单

由于二进制值是从右开始合并的2的倍数,因此很容易进行比较;

  • 具有最高一位的数字大于其他
  • ...如果两者的最高一位是相同的,请检查最高位之前的那一位并继续这样做,直到其中任何一位为零而不是一位或者你没有位来检查

当然,这种检查可以更模糊,更确定地更复杂,但性能更好,但这就是它在基本机器级别上的工作方式。