使用javap深入理解Java整型常量和整型变量的区别
我下图代码第五行和第九行分别定义了一个整型变量和一个整型常量: static final int number1 = 512; static int number3 = 545; Java程序员都知道两者的区别。 下面我们就用javap将.class文件反编译出来然后深入研究Java里整型变量和整型常量的区别。 使用命令行javap -c constant.ConstantFolding查看.class文件反编译出来的字节码: 结果: 这些字节码指令的说明,在wikipedia里有说明: wiki: https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings 咱们Java程序员不需要把它们都背下来,只需要把这个网页收藏起来,要用的时候当成字典来用就行: sipush 545: 将整数545放置到栈上 putstatic #16: 将栈上的值545赋给当前类的静态字段里。 那么putstatic #16里的#16代表什么含义? 我们再用javap -v 参数反编译,就能看到这个类的常量池(Constant pool)....

