读书人

到底是怎么实例化的

发布时间: 2012-11-03 10:57:42 作者: rapoo

到底是怎样实例化的?

?

?

昨天读到这个帖子?http://www.iteye.com/topic/650911?到底JVM实例化一个对象是怎样的了

到底有没实例化Object我 说错了大家帮我改正到底是怎么实例化的

?

?? ? ? ? 先来段简单的程序:

?

?

?

如果不熟悉JVM指令,看到这些东西确实难以理解很直观的看到Test默认为继承自Object这个JAVA中的超级父类,当new Test()的时候,调用Test的默认构造器,构造器其实就是一个特殊的静态的方法(这样说应该没错吧?)


?这些指令到底是在干些什么了???

?aload_0 将第一个引用类型本地变量推送至栈顶?

invokespecial???调用超类构造方法,实例初始化方法,私有方法(调用Object类的构造方法,JAVA中为每一个类的构造方法都生成了一个实例初始化方法,这个方法被称为<init>,我们在指令中能清晰的看到)

getstatic???获取指定类的静态域,并将其值压入栈顶? (获得System类的PrintStream类型的out静态域)

ldc??????将应该并没用实例话Object吧 只是调用了构造方法吧正如我上面说的构造器其实就是一个特殊的静态的方法

?? 并不要创建实例对象就可以执行 ???

这个也许是我相当然吧最近在读深入JAVA虚拟机等我读的有点头绪了 再来下次说说这个吧到底是怎么实例化的只是最进看这虚拟机的书,看得满投雾水看来是我自己太菜了

?

我只是想更形象啊 这个话 我好像没写吧????


我啊 工作不到一年啊 菜鸟一个啊 莫见笑啊




这就等于在构造函数调用的时候才把当前实例的vt指针指向具体class里的vt表.

vt的构造不需要延迟,但vt的选定肯定需要延迟,要不然多态为什么还要叫动态绑定?

读书人网 >软件架构设计

热点推荐