Java代码块和构造函数
Java中代码块分为四种
普通代码块:就是一个方法的{},就算这个方法是个static方法也是普通代码块(只有在被调用时才会执行)。
静态代码块:就是static{}(自动执行),静态代码块的作用是对类进行初始化(一般对类的静态属性进行初始化)。在对类进行加载的时候就会执行。
构造代码块:没有static修饰的代码块{}(自动执行),构造代码块的作用是对所有对象的共性部分进行初始化,即没个对象创建时都会执行构造代码块。
同步代码块:在多线程中,就是用synchronized标记的代码段,同步代码块比同步方法小。
一个示例
public class Test {
private static int day=0;
private static int age=0;
// 静态代码块
static
{
System.out.println("这是静态代码块");
}
// 构造函数
public Test(){
System.out.println("构造函数day="+(++day));
}
// 构造代码块
{
System.out.println("构造代码块age="+(++age));
}
// 静态方法
public static void main(String[] args) {
System.out.println("进入main");
// 第一个对象
Test T1=new Test();
// 第二个对象
Test T2=new Test();
}
}
运行结果:
这是静态代码块
进入main
构造代码块age=1
构造函数day=1
构造代码块age=2
构造函数day=2
分析
这个程序中代码块的执行顺序:
静态代码块(在加载这个类时就会执行)
main函数代码块(因为被调用了)
构造代码块(初始化对象共性部分)
构造函数(根据参入参数初始化对象非共性部分)
参考文献:
csdn中作者“逝秋”的《java语言基础之4种代码块以及构造函数比较大集合-java基础精品笔记-作者:逝秋》。
博客圆中作者“呼拉呼拉呼拉拉”的《JAVA之构造函数和构造代码块》。