一、普通代码块
普通代码块就是定义在方法里的代码块
该代码块用于表示方法内一段局部空间里 进行某些运算.在出这段代码块局部空间后,代码块里面的局部变量作用域生命周期都会结束,下面非普通代码块的区域能用代码块内同名的变量且不会受影响
但是在普通代码块上方不能定义和普通代码块内相同名字的变量
二、构造代码块
构造代码块又称非静态代码块或者实例化代码块:定义在类内部,方法外部
构造代码块在创建对象的时候执行一次,每创建一个对象都会为其对应的对象执行一次构造代码块
构造代码块一般用于给成员变量进行初始化
在构造代码块内定义的变量是局部变量且可以出现和成员变量同名的局部变量,需要通过this引用访问成员变量
定义的成员变量可以放在构造代码块的前后,如果定义的成员变量有就地初始化语句时 会根据二者定义的位置按先后顺序执行,但是都会在构造方法前执行
三、静态代码块
静态代码块:定义在类内部,方法外部,被static关键字修饰的代码块
静态代码块只在类被加载的时候执行一次,实例化对象并不会执行静态代码块,即整个类生命周期只被执行一次
一般用于初始化静态成员变量
静态代码块不能初始化非静态成员变量因为其加载的时候并没有对象(内部不存在this),但是构造代码块可以给静态成员变量赋值(内可以使用this)