码迷,mamicode.com
首页 > 编程语言 > 详细

Java类的静态块の一

时间:2015-08-27 00:19:39      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

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

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

 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是静态的)。

Java类的静态块の一

标签:

原文地址:http://www.cnblogs.com/draenei/p/4762016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!