2016-04-23 32 views
0

我创建了一个名为JVMClassTest的Java类,然后进行编译。之后,我运行“javap -verbose JVMClassTest”。常量池的#4在哪里。在javap -verbose之后,一个常量池项目丢失

public class JVMClassTest { 
     private int i = 0; 
     private static String s = "tString"; 
     private final double d = 1.2d; 

     public JVMClassTest() { 

     } 

     public int getI() { 
      return i; 
     } 

     public static String getS() { 
      return s; 
     } 

     public double getD() { 
      return d; 
     } 
    } 

下面是结果

enter image description here

+0

不要在这里发布文字图片来浪费你的时间和带宽。发布文字。 – EJP

回答

1

作为每JVM specification on the classfile format的截图:

的CONSTANT_Long_info和CONSTANT_Double_info表示8字节的数字(长和双)常数:

...

所有8字节常量在类文件的constant_pool表中占用两个条目。如果CONSTANT_Long_info或CONSTANT_Double_info结构是索引为n的constant_pool表中的项目,则池中的下一个可用项目位于索引n + 2。