什么时候在java中调用构造函数?
何时调用构造函数?
- 在创建对象之前。
- 在对象创建期间。
- 创建对象后。
分配对象内存,初始化具有初始值的字段变量,然后调用构造函数,但其代码在对象超类的构造函数代码之后执行。
在字节码级别。
- 创建对象但未初始化。
- 调用构造函数,
this
传递对象 - 构造函数返回时,对象是完全构造/创建的。
注意:字节代码级别的构造函数包括变量的初始值和Java构造函数中的代码。 例如
int a = -1; int b; Constructor() { super(); b = 2; }
是相同的
int a; int b; Constructor() { super(); a = -1; b = 2; }
另请注意:在初始化类的任何部分之前始终调用super()。
在某些JVM上,您可以创建一个对象,而无需使用Unsafe.allocateInstance()进行初始化。 如果以这种方式创建对象,则无法调用构造函数(不使用JNI),但可以使用reflection来初始化每个字段。
它在对象创建时被调用。 必须首先为对象保留内存,否则构造函数代码无法运行。 所以mamybe我们可以在创建对象后说出来。 另请注意,在构造函数代码之前调用类中编写的初始化代码。
public Ex { int xVal = -1; int yVal; public Ex() { // xVal is already -1. //yVal defaults to 0. } }
JVM将首先为您的对象分配内存,然后初始化所有字段,然后调用您的构造函数。
创建新对象时会调用构造函数。
NewObject n = new NewObject(); public class NewObject { public NewObject() { // do stuff when object created } }
希望这可以帮助。
除了默认构造函数的情况之外,基本上调用构造函数来初始化实例变量的值。 但是,实例变量的初始化分4步完成(如适用):
- 变量用默认值初始化(整数为0,字符为u \ 0000等)
- 使用显式初始化值初始化变量
- 用静态块初始化
- 构造函数被称为
构造函数是实际创建对象的东西。 通过执行new MyClass()
(或其参数化版本)创建对象时调用它。
给定这些选项,1。在创建对象之前。
构造函数完成后,已创建对象。
每当我们使用’new’运算符创建一个对象时,第一个任务由new执行,即它为堆中的对象分配内存,指向堆栈中的引用变量并设置对象字段的初始值。然后它调用构造函数将’this’作为对象根据您的要求进行初始化…
所以构造函数总是在创建对象后调用….
注意:当您输入构造函数时,’this’关键字正在工作意味着您的对象已创建。