- 构造块:直接写在类当中的代码块(用{ }括起来的代码),构造块有个特点就是优先于构造方法执行,每次实例化对象的时候都会先执行一次;
class Demo{
public Demo(){
System.out.println("代码块2");
}
{
System.out.println("代码块1");
}
}
public class CodeBlock {
public static void main(String[] args) {
Demo demo1 = new Demo();
Demo demo2 = new Demo();
}
}
输出结果为:代码块1 代码块2 代码块1 代码块2
- 静态代码块: 用static 声明的代码块,具有以下特点:1、静态代码块会优先于main方法执行;2、类中定义的静态代码块会优先于构造块执行;3、不管生产多少对象,静态代码块只会执行一次。
class StaticDemo{
public StaticDemo(){
System.out.println("代码块2");
}
static{
System.out.println("静态代码块1");
}
}
public class StaticCodeBlock {
public static void main(String[] args) {
new StaticDemo();
new StaticDemo();
new StaticDemo();
}
static{
System.out.println("静态代码块0");
}
}
输出为:静态代码块0 静态代码块1 代码块2 代码块2 代码块2