JAVA静态代码块和非静态代码块

# 静态代码块
static {
  若干代码,随便写点啥吧。。。。
}

# 非静态代码块
{
  若干代码,随便写点啥吧。。。。
}

共同特点是

  • 方法名、作用域、返回值、参数一概没有。

不同特点

  • 静态代码块是在类被加载的时候(即初始化)去执行,且只执行一次
  • 非静态代码块是在类被实例化的时候执行。每被实例化一次,就会被执行一次。
  • 在无继承的情况下:执行顺序为:静态代码块 ——> 非静态代码块 ——> 构造函数
  • 在有继承的情况下:执行顺序为:父类,子类静态方法 ——> 父类非静态代码块、构造函数 ——> 子类非静态代码块、构造函数
参考:https://www.jianshu.com/p/1e3bd5062cde