# 在 invokevirtual 之后做什么

what does # do after invokevirtual

例如,如果整数变量 a 和 b 存储在局部变量 1 和 2 中,则此代码将计算 this.f(3+b*a)。 (这个指针存储在变量 0 中)

iload_1
aload_0
icons_3
iload_1
iload_1
imul
iadd
invokevirtual #4

#4站在这里干什么?

这是 class 文件的 常量池 的索引;它说 invokevirtual 的操作数存储在常量池的索引 #4 中(这将是 Constant_MethodRef_info。)如果您使用 -v 标志调用 javap,它会转出常量池,你会在索引#4 看到它正在调用什么 class 和方法。