什么时候在java中调用构造函数?

何时调用构造函数?

  1. 在创建对象之前。
  2. 在对象创建期间。
  3. 创建对象后。

分配对象内存,初始化具有初始值的字段变量,然后调用构造函数,但其​​代码在对象超类的构造函数代码之后执行。

在字节码级别。

  1. 创建对象但未初始化。
  2. 调用构造函数, this传递对象
  3. 构造函数返回时,对象是完全构造/创建的。

注意:字节代码级别的构造函数包括变量的初始值和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步完成(如适用):

  1. 变量用默认值初始化(整数为0,字符为u \ 0000等)
  2. 使用显式初始化值初始化变量
  3. 用静态块初始化
  4. 构造函数被称为

构造函数是实际创建对象的东西。 通过执行new MyClass() (或其参数化版本)创建对象时调用它。

给定这些选项,1。在创建对象之前。

构造函数完成后,已创建对象。

每当我们使用’new’运算符创建一个对象时,第一个任务由new执行,即它为堆中的对象分配内存,指向堆栈中的引用变量并设置对象字段的初始值。然后它调用构造函数将’this’作为对象根据您的要求进行初始化…

所以构造函数总是在创建对象后调用….

注意:当您输入构造函数时,’this’关键字正在工作意味着您的对象已创建。