java里静态代码块、构造块、构造方法的相关区别,并举例验证
时间: 2024-01-31 10:03:30 浏览: 237
静态代码块,构造块和构造方法是Java中对象初始化的三种方式,它们各自具有不同的执行顺序和作用。它们的区别如下:
1. 静态代码块是在类被加载时执行的代码块,它只执行一次。静态代码块主要用于类的初始化,如静态变量的初始化等。
2. 构造块是在类中定义的代码块,每次创建对象时都会执行,不论是调用无参构造函数还是有参构造函数。构造块用于初始化对象,如为对象的成员变量分配内存等。
3. 构造方法也是用于对象的初始化,但是它可以接收参数。构造方法用于为对象的成员变量赋初值。
下面是一个例子,可以帮助理解它们之间的关系:
```java
public class BlockTest {
static {
System.out.println("静态代码块执行");
}
{
System.out.println("构造块执行");
}
public BlockTest() {
System.out.println("无参构造器执行");
}
public BlockTest(int a) {
System.out.println("有参构造器执行");
}
public static void main(String[] args) {
BlockTest bt1 = new BlockTest();
BlockTest bt2 = new BlockTest(10);
}
}
```
运行以上代码,输出结果如下:
```
静态代码块执行
构造块执行
无参构造器执行
构造块执行
有参构造器执行
```
可以看出,静态代码块是在类被加载时执行的,构造块是每次创建对象时都会执行的,而构造方法是用于为对象的成员变量赋初值的。
需要注意的是,虽然静态代码块和构造块都用于对象的初始化,但是它们的执行顺序是有区别的。静态代码块只会在类初始化时执行一次,而构造块则会在对象创建时执行。因此,静态代码块先于构造块执行。
阅读全文