【发布时间】:2016-01-06 15:09:20
【问题描述】:
我有以下代码:
public static void f(){
double i = 0.0;
for(i = 0.0; i<100.0; i++){}
}
翻译成以下字节码:
public static void f();
Code:
0: dconst_0
1: dstore_0
2: dconst_0
3: dstore_0
4: dload_0
5: ldc2_w #2 // double 100.0d
8: dcmpg
9: ifge 19
12: dload_0
13: dconst_1
14: dadd
15: dstore_0
16: goto 4
19: return
我对包含评论 //double 100.0d 的行感到困惑
我有点理解ldc2_w 的作用。它从常量池中获取适当的常量。而且常量池中包含了解析Java代码后定义的常量列表,对吧?
但是#2 的目的是什么?怎么知道这里应该放什么数字?在一个在线教程中,我看到有人改用#4?
这个操作数是什么意思?
【问题讨论】:
标签: java constants bytecode operand