我正在尝试学习 java 字节码,但我偶然发现了这一点:我使用以下-g
选项编译了这个非常简单的代码:
public class Test
{
public static void main(String args[])
{
double a = 1.0;
int b = (int)a;
}
}
主要代码原来是:
0 dconst_1
1 dstore_1
2 dload_1
3 d2i
4 istore_3
5 return
另外,main 的最大局部变量是 4 个,LocalVariableTable 只有 3 个条目(args, a, b)。我很想知道为什么编译器保留了 4 个局部变量,而显然只有 3 个,并且localvariable[2]
没有被使用。有什么我想念的吗?谢谢