静态初始化块的执行顺序测试

如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?

 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,说明执行类成员定义时指定的默认值或初始化块,

但地执行哪一个要看哪一个排在前面,之后在执行类的构造函数。

posted @ 2021-10-09 21:56  SHINIAN200  阅读(29)  评论(0)    收藏  举报