0

我想看看这段代码的字节码

if (3 < 5) {

}

使用 javap -c 。但由于某种原因,它没有显示步骤。ex int a; 工作正常。

任何想法如何在字节码中看到这个?

4

3 回答 3

1

编译器并不像你想象的那么愚蠢。您尝试在字节码中看到的块是:

  1. 空的
  2. 永远真实

这意味着编译器会将其完全排除在字节码之外。

尝试以下操作:

    int a = 3;
    if(a < 5)
    {
        a = 3 + 5;
    }

您将在字节码中获得以下汇编指令:

   0: iconst_3      
   1: istore_1      
   2: iload_1       
   3: iconst_5      
   4: if_icmpge     10
   7: bipush        8
   9: istore_1      
  10: return 
于 2013-06-09T01:40:06.697 回答
0

如果您想知道,如果没有完全优化,将生成的字节码类似于

iconst_3
iconst_5
if_icmpge (offset)
于 2013-06-09T01:53:04.787 回答
0

javap -c:打印每个指定类中每个方法的 Java 虚拟机指令。此选项反汇编所有方法,包括私有方法。

由于您的块中没有任何内容并且条件始终为真,您可能看不到字节码。

于 2013-06-09T01:36:58.010 回答