1、静态代码块
- static 修饰
- 内部可以有输出语句
- 随着类的加载而执行,只执行一次
- 作用:初始化类的信息
- 静态代码块只能调用静态的属性、方法
2、非静态代码块
- 内部可以有输出语句
- 随着对象的创建而执行
- 每创建一个对象就执行一次
- 作用:在创建对象时对属性进行初始化
**注意:**对属性可以初始化的位置
- 默认初始化
- 显示初始化
- 构造器中初始化
- 有对象后:通过“对象.属性”或“对象.方法”初始化
- 在代码块中赋值
- 可以调用静态或者非静态的属性、方法
3、执行顺序
*************. 按先后顺序(但是静态都在先执行)&&&&&&&&&&&&&&&&
4、代码简单实现
package com.learn.block;
public class Perpon {
public static void main(String[] args) {
System.out.println("创建对象后");
System.out.println("创建第一个对象");
Perpon perpon1 = new Perpon();
System.out.println("创建第二个对象");
Perpon perpon2 = new Perpon();
}
static {
System.out.println("我是一个静态代码块");
System.out.println("我的作用是初始化类");
}
{
System.out.println("我是一个非静态代码块");
System.out.println("我的作用是初始化对象");
}
}
运行结果