当你实例调用构造一个新的对象,即 Foo bar = new Foo(var);
在堆(Java)上创建对象之后调用对象的构造函数吗?
什么时候在构造函数中的代码实际上获取关系调用来创建对象堆?当构造函数修改bar的成员变量时,是否存储已分配的变量并包含默认值?
当你实例调用构造一个新的对象,即 Foo bar = new Foo(var);
在堆(Java)上创建对象之后调用对象的构造函数吗?
什么时候在构造函数中的代码实际上获取关系调用来创建对象堆?当构造函数修改bar的成员变量时,是否存储已分配的变量并包含默认值?
一旦调用了new
,它就知道需要将多少内存分配到一个变量类型的堆中,在您的情况下是Foo。一旦只分配了内存,那么是设置的值。想想看,如果你没有成员变量的内存,你还有什么要分配成员变量?如果没有内存,新的会抛出一个你需要处理的异常。
过程:
null
new
5)调用构造函数 - 这是原始问题 – 2010-03-10 18:06:38
@ian - 对不起,我添加了:)。谢谢你! – JonH 2010-03-10 18:14:25
你能说这些信息的来源吗?我想了解更多。 – 2010-03-31 12:52:05
当JVM遇到新的关键字时,它为该类类型分配所需的内存,如果没有初始化,则它将所有成员初始化为其默认值,并且如果该成员是对象,则为空。
这里 Foo bar = new Foo(var);我们正在创建bar对象。当我们使用时,新的关键字的内存分配在堆上。分配的内存量取决于类的实例变量.JVM将计算要分配的内存量,然后使用新的它将分配内存。这里是一个引用变量指向对象分配的堆。
构造函数不能被调用,直到内存存在。
对于成员变量,它是同一规则的递归应用程序。
@theactiveactor - 你需要更多的帮助吗?我注意到这个问题没有得到任何批准就被打开了。 – JonH 2010-03-12 13:42:03