Ich versuche, Java-Bytecode zu lernen, und ich stolperte über dieses: ich diesen sehr einfachen Code mit dem -g
Option kompiliert:Lokale Variablen in Java-Bytecode
public class Test
{
public static void main(String args[])
{
double a = 1.0;
int b = (int)a;
}
}
Der Hauptcode entpuppte:
0 dconst_1
1 dstore_1
2 dload_1
3 d2i
4 istore_3
5 return
Darüber hinaus ist die maximale lokale Variablen main 4, und die LocalVariableTable hat nur 3 Einträge (args, a, b). Ich bin neugierig zu wissen, warum der Compiler 4 lokale Variablen reserviert, während es eindeutig nur 3 ist, und localvariable[2]
wird nicht verwendet. Gibt es etwas, das mir fehlt? Danke