Demo小细节-2

今天在牛客的题海中再次找虐,题目如下:

 1 public class B {
 2      public static B t1 = new B();
 3         public static B t2 = new B();
 4         {
 5             System.out.println("构造块");
 6         }
 7         static
 8         {
 9             System.out.println("静态块");
10         }
11         public static void main(String[] args)
12         {
13             B t = new B();
14         }
15     
16 }

 按照脑回路一看这题就一股脑儿就直接biu出来了,“先执行静态块,再执行三个构造的代码块”这样子

但是,最后发现这个阿里爸爸的题,还是年轻啊

正确的理解是这样的:

最先初始化的并不是静态块,而是静态域!!!

而静态域中包含的是(静态块、静态变量、静态方法),而最想初始化的是静态变量和静态块,而这俩的初始化顺序则由他们在程序之中的位置决定的。

posted @ 2019-08-28 10:10  wudidamowang666  阅读(97)  评论(0编辑  收藏  举报