Java:比较int时,==运算符如何工作?

Arp*_*sss 5 java

鉴于此Java代码:

int fst = 5;
int snd = 6;

if(fst == snd)
    do something;
Run Code Online (Sandbox Code Playgroud)

我想知道Java如何比较这种情况下的相等性.它会使用XOR操作来检查相等性吗?

Oli*_*rth 9

您是在问"这会变成什么样的本机代码?"?如果是这样,答案是"实施 - 懈怠".

但是,如果您想知道使用了什么JVM字节码,只需查看生成的.class文件(使用例如javap来反汇编它).

  • +1绝对!如果没有像JVM的编写者那样做出"如何实现`int` equality"这样的决定,那么他/她也可以为他们编写JVM :) (3认同)
  • 值得补充的是,您甚至可以看到 JIT 编译器生成的本机代码。在那里,您最终将能够见证您的 XOR 或 CMP 或“==”发生的任何情况。 (2认同)