首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java字节码结构对象为什么需要dup命令

2012-12-23 
java字节码构造对象为什么需要dup命令0new jvm.study.Test [1]3dup4invokespecial jvm.study.Test() [16]7

java字节码构造对象为什么需要dup命令

    0  new jvm.study.Test [1]    3  dup    4  invokespecial jvm.study.Test() [16]    7  astore_1 [t]    8  return

这里有个dup指令。其作用就是复制之前分配的jvm.study.Test空间的引用并压入栈顶。那么这里为什么需要这样么做呢?因为invokespecial指令通过[16]这个常量池入口寻找到了jvm.study.Test()构造方法,构造方法虽然找到了。但是必须还得知道是谁的构造方法,所以要将之前分配的空间的应用压入栈顶让invokespecial命令应用才知道原来这个构造方法是刚才创建的那个引用的,调用完成之后将栈顶的值弹出。
之后调用astore_1将此时的栈顶值弹出存入局部变量中去。

热点排行