Skip to main content

代码块

代码块

代码块又称为初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法里,通过{}包围起来。

但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不用通过对象或类显式调用,而是加载类的时候,或创建对象的时候隐式调用

基本语法

[修饰符]{
代码
}

注意:

  1. 修饰符可选,要写的话,也只能写static
  2. 代码块分为2类,使用static修饰符的叫静态代码块,没有static修饰的,叫普通代码块
  3. 逻辑语句可以是任何逻辑语句(输入,输出,方法调用,循环,判断)
  4. ;号可以写上,也可以省略。

代码块细节

  1. static代码块也叫静态代码块,作用就是对类进行初始化,随着类的加载执行,并且只会执行一次,如果是普通代码块,每创建一个对象就会执行。
  2. 类什么时候会被加载
    • 创建对象实例的时候(new)
    • 创建子类对象实例,父类也会被加载
    • 使用类的静态成员(静态属性,静态方法)
  3. 普通代码块,在创建对象实例的时候,会被隐式调用,创建一次调用一次, 如果只是使用静态属性,方法, 普通代码块不会执行
  4. 创建一个对象时,在一个类 调用顺序是,
    • 静态代码块和静态属性初始化,有多个静态代码块的话 按定义顺序调用
    • 调用普通代码块和普通属性的初始化,调用优先级一样,多个话按定义顺序
    • 最后调用构造器
  5. 构造器的最前的 其实隐式调用了 super() 和 普通代码块
  6. 创建一个子类(继承关系),他们的静态代码块, 静态属性初始化,普通代码块,普通属性初始,构造器调用顺序:
    • 父类的静态代码块和静态属性
    • 子类的静态代码块和静态属性
    • 父类普通代码块和普通属性
    • 父类构造方法
    • 子类普通代码块和普通属性
    • 子类构造器方法
  7. 静态代码块只能调用静态属性和静态方法,普通代码块可以调用任意成员