本帖最后由 田磊阳 于 2013-3-27 21:09 编辑
这个怎么来说呢,因为静态代码块和构造代码块之间没有什么关系。
简单的说一下他俩个的区别吧:
1、静态代码块:它是随着类的的加载而执行,类一加载静态代码块就会执行,并且只执行一次
2、构造代码块:是用于给对象进行初始化,对象一建立,构造代码块就会运行
3、所以静态代码块比构造代码块先执行,构造代码块比构造函数先执行;
用代码解释一下吧:
- class StaticCode{
- int num=9;
- //建立构造函数
- StaticCode(){
- System.out.println("b");
- }
- //下面建立静态代码块
- static{
- System.out.println("a");
- }
- //下面建立构造代码块
- {
- System.out.println("c"+this.num);
- }
- //在建立一个show()
- public static void show(){
- System.out.println("show run");
- }
- }
- class Demo{
- public static void main(String[] args){
- new StaticCode();
-
- }
- }
-
- 输出结果:
- a
- c9
- b
- 看一下这个顺序:先是静态代码块,然后是构造代码块,然后是构造函数,从new StaticCode();可以看出,对象一建立,就迅速执行了这些程序。具体在内存是怎么运行的,和创建对象是差不多的,关键就是执行顺序,掌握好执行顺序就好了。
-
复制代码 |