1.静态代码块和普通匿名代码快都比构造函数先运行
2.静态代码块比非静态代码块先执行。
3.静态变量、静态方法都属于类,类加载时便有了,而此时还没有对象
示例:
public class Demo { public static void main(String[] args) { A a = new A(); System.out.println(A.m); } } class A { public A() { System.out.println("A类的无参构造方法"); } { System.out.println("非静态代码块"); } static { System.out.println("静态代码块"); m = 2019; } static int m = 2020; }
结果
静态代码块
非静态代码块
A类的无参构造方法
2020
很好的参考:
https://www.cnblogs.com/bigdata-stone/p/10458380.html