代码块
代码块
代码块又称为初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法里,通过{}包围起来。
但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不用通过对象或类显式调用,而是加载类的时候,或创建对象的时候隐式调用
基本语法
[修饰符]{
代码
}
注意:
- 修饰符可选,要写的话,也只能写static
- 代码块分为2类,使用static修饰符的叫静态代码块,没有static修饰的,叫普通代码块
- 逻辑语句可以是任何逻辑语句(输入,输出,方法调用,循环,判断)
- ;号可以写上,也可以省略。
代码块细节
- static代码块也叫静态代码块,作用就是对类进行初始化,随着类的加载执行,并且只会执行一次,如果是普通代码块,每创建一个对象就会执行。
- 类什么时候会被加载
- 创建对象实例的时候(new)
- 创建子类对象实例,父类也会被加载
- 使用类的静态成员(静态属性,静态方法)
- 普通代码块,在创建对象实例的时候,会被隐式调用,创建一次调用一次, 如果只是使用静态属性,方法, 普通代码块不会执行
- 创建一个对象时,
在一个类
调用顺序是,- 静态代码块和静态属性初始化,有多个静态代码块的话 按定义顺序调用
- 调用普通代码块和普通属性的初始化,调用优先级一样,多个话按定义顺序
- 最后调用构造器
- 构造器的最前的 其实隐式调用了 super() 和 普通代码块
- 创建一个子类(继承关系),他们的静态代码块, 静态属性初始化,普通代码块,普通属性初始,构造器调用顺序:
- 父类的静态代码块和静态属性
- 子类的静态代码块和静态属性
- 父类普通代码块和普通属性
- 父类构造方法
- 子类普通代码块和普通属性
- 子类构造器方法
- 静态代码块只能调用静态属性和静态方法,普通代码块可以调用任意成员