静态初始化块的执行顺序测试
如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?
1 public class InitializeBlockClass { 2 { 3 field=200; 4 } 5 public int field=100; 6 public InitializeBlockClass(int value) { 7 this.field = value; 8 } 9 public InitializeBlockClass() { 10 11 } 12 public static void main(String[] args) { 13 InitializeBlockClass obj = new InitializeBlockClass(); 14 System.out.println(obj.field); 15 obj = new InitializeBlockClass(300); 16 System.out.println(obj.field); 17 } 18 }

输出100和300,说明执行类成员定义时指定的默认值或初始化块,
但地执行哪一个要看哪一个排在前面,之后在执行类的构造函数。

浙公网安备 33010602011771号