1.静态代码块(Static Block)
静态代码块在类加载时执行,仅执行一次,且在类加载时执行一次。静态代码块通常用于初始化静态成员变量或执行一些全局性的初始化操作。如果有多个静态代码块,它们的执行顺序按照它们在类中的顺序执行。
public class MyClass {
static {
// 静态代码块
}
}
2.代码块(Instance Initialization Block)
代码块是在对象实例化时执行的,每次创建对象时都会执行。代码块通常用于初始化实例变量或执行一些特定对象的初始化操作。如果有多个代码块,它们按照它们在类中的顺序执行,然后再执行构造方法。
public class MyClass {
{
// 代码块
}
}
3.构造方法(Constructor)
构造方法是在对象实例化时执行的,用于初始化对象的状态。如果有多个构造方法,根据你选择的构造方法来执行相应的构造逻辑。
public class MyClass {
public MyClass() {
// 构造方法
}
}
执行顺序通常是先执行静态代码块,然后执行代码块,最后执行构造方法。注意,如果有继承关系,子类的构造方法在执行时会调用父类的构造方法,从而可能会涉及到父类的静态代码块、代码块和构造方法的执行。
示例:
public class MyClass {
static {
// 静态代码块
}
{
// 代码块
}
public MyClass() {
// 构造方法
}
}
Demo
public class Example {
static {
System.out.println("Static Block");
}
{
System.out.println("Instance Initialization Block");
}
public Example() {
System.out.println("Constructor");
}
public static void main(String[] args) {
System.out.println("Creating object 1:");
Example obj1 = new Example();
System.out.println("\nCreating object 2:");
Example obj2 = new Example();
}
}
当运行上面的代码时,输出将如下所示:
Static Block
Creating object 1:
Instance Initialization Block
Constructor
Creating object 2:
Instance Initialization Block
Constructor
总结
静态代码块在类加载时执行一次,代码块在对象实例化时执行,构造方法也在对象实例化时执行。这个顺序对于每个对象的创建都是一样的。
1.Static Block(静态代码块):在类加载时执行,仅执行一次。在这个例子中,它在第一次创建对象之前执行.
2.Instance Initialization Block(代码块):在对象实例化时执行,每次创建对象时都会执行。在这个例子中,它在构造方法之前执行,因此会在构造方法之前打印出相应的信息。
3.Constructor(构造方法):在对象实例化时执行,用于初始化对象的状态。在这个例子中,构造方法在代码块之后执行。