静态代码块、构造代码块与构造函数的区别

来源:互联网 发布:ubuntu firefox 崩溃 编辑:程序博客网 时间:2024/06/06 03:06

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class StaticTest {
     
    public static void main(String[] args){
        staticFunection();           
    }
     
    static StaticTest st = new StaticTest();
    static{
        System.out.println("1");
    }
     
    {
        System.out.println("2");
    }
     
    public StaticTest() {
        // TODO Auto-generated constructor stub
        System.out.println("3");
        System.out.println("a ="+ a +", b="+b);
    }
     
    public static void staticFunection(){
        System.out.println("4");
    }
     
    int a = 110;
    static int b = 112;
}

输出顺序:

2
3
a =110, b=0
1
4

构造代码块优先构造方法执行
静态块优先于构造方法的执行
执行顺序:静态代码>构造代码块>构造函数

但是由于 static StaticTest st = new StaticTest(); 的存在 , 导致先构造块,构造函数,然后向后执行
所以,先2,再3,再1,再4
因为b定义在下,对于静态 基本类型int默认为0.(包括未赋值的情况下都为0)


[java] view plain copy

 print?
  1. public class Dev {  
  2.     static {  
  3.         System.out.println("静态代码块");  
  4.     }  
  5.     {  
  6.         System.out.println("构造代码块");  
  7.     }  
  8.   
  9.     public Dev() {  
  10.         System.out.println("我是一个无参构造方法");  
  11.     }  
  12.   
  13.     public Dev(String name) {  
  14.         System.out.println("我是带有一个参数的构造方法");  
  15.     }  
  16. }  

1. 这段代码的执行顺序:静态代码块会先执行,并且只执行一次,接着是构造代码块执行(构造代码块在构造方法之前执行,并且每创建一次对象,它就会执行一次。而构造方法只执行一次。) 

2. 静态代码块的作用:比如我们在调用C语言的动态库时会可把.so 文件放在此处。 

3. 构造代码块的功能:(可以把不同构造方法中相同的共性的东西写在它里面)。例如:比如不论任何机型的电脑都有开机这个功能,此时我们就可以把这个功能定义 在构造代码块内。









阅读全文
0 0
原创粉丝点击