通过调用构造函数实例化新对象时,即
Foo bar = new Foo(var);
构造函数中的代码何时实际调用与对象创建堆的关系?当构造函数修改bar的成员变量时,是否已经分配的变量存储并包含默认值?
答案 0 :(得分:3)
一旦new
被调用,就会知道在你的Foo案例中,需要为堆中的类型变量分配多少内存。只有分配了内存后,才会设置值。想想如果你没有成员变量的内存,你还会如何分配成员变量?如果没有内存,则会抛出一个需要处理的异常。
过程:
new
null
答案 1 :(得分:0)
当JVM遇到新关键字时,它为该类类型分配所需的内存,如果没有初始化,则将所有成员初始化为其默认值,如果该成员是对象,则为null。
答案 2 :(得分:0)
下面 Foo bar = new Foo(var); 我们正在创建bar对象。当我们使用 new 关键字时,内存分配在堆上。分配的内存量取决于实例类的变量.JVM将计算要分配的内存量,然后使用 new 它将分配内存.Here bar是指向分配对象的堆上的引用变量。 / p>
答案 3 :(得分:0)
在内存存在之前,无法调用构造函数。
对于成员变量,它是同一规则的递归应用程序。