zoukankan      html  css  js  c++  java
  • Java类的静态块の一

    类的静态块在类加载时候执行,执行早于构造函数,并且只执行一次。

    下面这个例子可以帮助理解:

     1 package untility;
     2 
     3 public class A {
     4     // 静态块
     5     static {
     6         A c ;
     7         System.out.println(200);
     8         c = new A();
     9         i = 10;
    10     }
    11 
    12     public static int i;
    13     public int j;
    14 
    15     public A() {
    16         System.out.println(A.i);
    17         System.out.println(j);
    18     }
    19 
    20     public static void main(String[] args) {
    21         A a = null;
    22         System.out.println(100);
    23         a = new A();
    24         //A b = new A();
    25     }
    26 }

    运行结果:

    200
    0
    0
    100
    10
    0

    解析:

    程序从main方法进去,执行到21行代码加载类,然后执行static模块,继续执行到第6行,再次加载类,再次运行到static模块,此时第6行已经被执行过一次,所以不会再被执行(写完Java类的静态块の二发现这里的描述是有问题的,这里不会重复加载A类,只会重复往下执行第7行),然后执行第7行,所以第一个被打印出来是200,然后执行第8句的构造函数(没有执行到第9句,所以i和j都是0),打印出来2个0,然后继续执行static模块中的第9句,此时i=10,到此加载类完成,然后继续执行21行的=null语句,在执行22行的打印,输出100,最后执行第23行的构造函数,打印出来10 0(因为i是静态的)。

  • 相关阅读:
    layer系列之弹层layer.prompt
    顶级域名、一级域名、二级域名与IP
    Redis知识点总结
    js知识点总结
    PowerDesigner相关总结
    C#中使用Join与GroupJoin将两个集合进行关联与分组
    IIS知识点总结
    打印知识点总结
    vim显示行数
    Linux NFS服务器的安装与配置
  • 原文地址:https://www.cnblogs.com/draenei/p/4762016.html
Copyright © 2011-2022 走看看