1、分为 静态代码块 vs 非静态代码块
2、静态代码块:
(1)随着类的加载而执行,只执行一次
(2)内部可以有输出语句
(3)作用:可以对类中静态的属性重新赋值
(4)类中有多个静态代码块,按声明的先后顺序执行
(5)静态代码块的执行优于非静态代码块
(6)可调用静态的属性或方法,不能调用非静态的结构
3、非静态代码块:
(1)随着new对象的创建而进行,每创建一次执行一次
(2)作用:可以在创建对象时对属性进行初始化
(3)类中有多个非静态代码块,按声明的先后顺序执行
(4)可调用静态的属性或方法,也能调用非静态的结构
public class block {
public static void main(String[] args) {
Person person=new Person();
}
}
class Person{
private static String desc="第一次初始化";
//非静态代码块
{
System.out.println("非静态代码块");
}
static {
System.out.println("静态代码块");
}
}