日期:2014-05-20  浏览次数:20770 次

java 构造器的疑问!
书中这样说:
1、构造器实际上是静态方法,当首次创建类型为Dog的对象时候,或Dog的静态方法/静态域首次创建类型为Dog的对象时,java 解释器必须查找类路径,以定位Dog.class文件。
2、载入Dog.class,并静态初始化.
3、当用new Dog()创建对象的时候,首先将在堆上为Dog对象分配足够的存储空间。
   
我我疑问是:
因为1 和3中都说到Dog()构造器,然后又是不同的,所以我这样想:1 是还没有执行Dog()构造器里面的内容,而 3中是执行Dog()构造器里面的内容,这样想对吗?
 我在这里不懂怎么去理解。求大神帮忙。谢谢

------解决方案--------------------
是先看看有没有Dog.class文件,没有的话要先生成Dog.class文件,然后加载Dog.class文件执行Dog的构造方法。
------解决方案--------------------
Java运行机制:编译-network/host-通过classloader(类加载器)(装进内存)-Byte code verifier(代码校验)-(运行)
Interpreter(解释器)/(及时运行)JIT Code generator(经常找出运行的代码,转成cpu子令,无需再编译)-Hardwate,即环境变量classpath配的路径,这个应该是1的意思,3的意思是说对象都放在堆里,没觉得矛盾啊。
------解决方案--------------------
应该是这个意思
------解决方案--------------------
不是吧,3里只要一new,堆内存就分配出空间了。
说实话,这段话说的好晦涩,翻译的问题吗?
------解决方案--------------------
请问你看的是什么书,
目前市面上的书很多是垃圾的,并且针对技术这方面的说法也不规范..各说各的.

我想告诉你的是 当你New的时候,这时还没启动构造器,而是在内存中开始做着一系列的工作,

当在内存中的 空间 地址值 都分配好了之后 才会 启动构造器,, 构造器的左右是给类进行初始化的.