📅  最后修改于: 2023-12-03 15:16:19.475000             🧑  作者: Mango
在Java中,初始化块和构造函数都用于初始化对象的状态。但它们之间存在着一些差别,比如执行顺序等。在本文中,我们将探讨Java中初始化块和构造函数的执行顺序。
初始化块是一个代码块,其中编写的代码在创建对象时被执行一次,用于初始化对象的状态。在Java中,有两种类型的初始化块:静态初始化块和实例初始化块。
静态初始化块是用于初始化静态变量的代码块,它在类加载时被执行,且仅执行一次。下面是一个静态初始化块的例子:
public class MyClass {
static {
// 静态初始化块代码
}
// 其他类成员和方法
}
实例初始化块是用于初始化实例变量的代码块,它在对象创建时被执行。下面是一个实例初始化块的例子:
public class MyClass {
{
// 实例初始化块代码
}
// 其他类成员和方法
}
构造函数是用于初始化对象的代码块,它在对象创建时被执行。下面是一个构造函数的例子:
public class MyClass {
public MyClass() {
// 构造函数代码
}
// 其他类成员和方法
}
在Java中,当创建一个新对象时,其初始化块和构造函数会按照下面的顺序执行:
class Parent {
int parentVariable = 10;
{
System.out.println("Parent instance initialization block.");
}
Parent() {
System.out.println("Parent constructor.");
}
}
class Child extends Parent {
int childVariable = 20;
{
System.out.println("Child instance initialization block.");
}
Child() {
System.out.println("Child constructor.");
}
public static void main(String[] args) {
new Child();
}
}
这个程序会输出下面的内容:
Parent instance initialization block.
Parent constructor.
Child instance initialization block.
Child constructor.
可以看出,初始化块的执行顺序与它们在代码中出现的顺序是一致的,构造函数的执行顺序在其前面。