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

Sus*_*ant 9 java

何时调用构造函数?

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

Luc*_*ano 21

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


Pet*_*rey 6

在字节码级别.

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

注意:在字节代码级别的构造包括变量的初始值在Java构造函数的代码.例如

int a = -1;
int b;

Constructor() {
   super();
   b = 2;
}
Run Code Online (Sandbox Code Playgroud)

是相同的

int a;
int b;

Constructor() {
   super();
   a = -1;
   b = 2;
}
Run Code Online (Sandbox Code Playgroud)

另请注意:在初始化类的任何部分之前始终调用super().


在某些JVM上,你可以不与Unsafe.allocateInstance初始化它创建一个对象().如果你创建对象这样,你就不能调用构造函数(不使用JNI),但你可以使用反射来初始化各个领域.