1.如果需要修饰只能使用static;
2.分类:静态代码块、非静态代码块
3.静态代码块
- 内部可以声明执行语句
- 随着类的加载而执行
- 由于类的加载只执行一次,所以静态代码块也只执行一次
- 作用:用来输出话类的基本信息:静态属性
- 可以在内部调用类的静态结构:属性,方法。不能调用非静态的属性和方法
- 如果一个类中声明了多变静态代码块,则按照声明的先后顺序执行
4.非静态代码块
- 内部可以声明执行语句
- 随着对象的创建而执行
- 创建一个对象,就执行一次
- 用来初始化对象的基本信息:非静态属性
- 可以在内部调用静态结构和非静态结构:属性、方法
- 如果一个类中声明了多个非静态代码块,则按照声明的先后顺序执行
注意:
- 类中出现继承关系的时候,“由父及子,静态先行”。创建一个对象时会先输出父类的静态代码块,然后子类的静态代码块。然后在输出非静态的代码块,最后调用了构造器
- 显式初始化和代码块初始化,谁写在后面由谁决定