static 代码块

double

记录一下

static 静态关键词

  1. static 关键字无法使用在 class 上
  2. 在方法、类构造块也不能添加 static 关键词
  3. static 定义的属性值只能通过 class.xxx 来访问, 并且是所有实例化对象共享的
  4. 在成员方法中,可以访问类中静态成员
  5. 在静态成员方法中,不能访问统一类中非成员,只能直接调用同一类中的静态成员
  6. 静态方法中不能使用 this

代码块

普通代码块

定义在成员方法中, 按顺序执行,遵守先出现先执行

class Foo { sayHello() { { System.out.println("普通代码块"); } } }

构造代码块

定义在类中的代码块称为构造代码块,在创建对象时调用且优先于构造方法执行,可以给普通成员和静态成员赋值,在一个类当中可以拥有多个,每次实例化对象时候都会执行

class Foo { { System.out.println("我是构造代码块"); } }

静态代码块

在类中添加 static 关键词的构造代码块称为静态代码块,只能给静态成员赋值,在虚拟机进行类加载的时候就会执行跟 static 相关的一系列成员分配。一个类中可以有多个静态代码块,都是按顺序执行且无论实例化对象多少次都只会执行一次

class Foo { static { System.out.println("我是静态代码块"); } }

继承的初始化顺序

父类的静态代码块 > 子类的静态代码块 > 父类的构造代码块 > 父类的无参构造方法 > 子类的构造代码块 > 子类的无参构造方法

扩展阅读

Java:构造器,构造代码块,静态代码块的执行顺序