首先,静态代码块,构造代码块,和构造函数都存在于一个类中,只不过,他们执行的先后顺序和执行的次数不同。
静态代码块,只执行一次,比如,当你想要创建10个对象时,当创建第一个对象时,执行一次,然后当你继续创建剩余的对象时,这个静态代码块就不会被执行了。
而构造代码块与构造函数的异同点: 相同点:每创建一个对象,构造代码块和构造函数都执行一次,不同点:执行的顺序不同,先执行构造代码块,再执行构造方法。
public class statictest {
//构造代码块
{
System.out.println("我是构造代码块1");
}
//静态构造代码块
static{
System.out.println("我是静态构造代码块1");
}
//构造函数
statictest() {
System.out.println("我是构造函数");
}
//构造代码块
{
System.out.println("我是构造代码块2");
}
//静态构造代码块
static{
System.out.println("我是静态构造代码块2");
}
public static void main(String[] args) {
//第一次创建对象
new statictest();
System.out.println("-------------------------------------------");
//第二次创建对象
new statictest();
}
}
结果如下:
我是静态构造代码块1
我是静态构造代码块2
我是构造代码块1
我是构造代码块2
我是构造函数
-------------------------------------------
我是构造代码块1
我是构造代码块2
我是构造函数
来源:oschina
链接:https://my.oschina.net/u/2940767/blog/1637703