如题是结论,如果有人问你Java类的成员初始化顺序和初始化块知识就这样回答他。下面是代码:
package com.test;public class TestClass{// 成员变量赋值第一个执行private static int m1=1;private int m2=1;// 静态构造函数第二个执行static{System.out.println("成员变量赋值先于静态构造函数 m1="+m1);m1=2;}// 构造函数第三个执行public TestClass(){System.out.println("静态构造函数先于构造函数 m1="+m1);m1=3;System.out.println("成员变量赋值先于构造函数 m2="+m2);m2=3;}public void printM1m2(){System.out.println("m1="+m1);System.out.println("m2="+m2);}public static void main(String[] args){TestClass t=new TestClass();t.printM1m2();} }
控制台输出:
成员变量赋值先于静态构造函数 m1=1 静态构造函数先于构造函数 m1=2 成员变量赋值先于构造函数 m2=1 m1=3 m2=3