黑马程序员技术交流社区

标题: 请问实例代码块和static 代码块有什么区别? [打印本页]

作者: Twinboss    时间: 2013-8-21 23:13
标题: 请问实例代码块和static 代码块有什么区别?
今天在学习了实例代码块以及static 代码块,但是还是不怎么懂,请问,它俩之间都有什么区别啊?
都作用在什么地方?谢谢回复。。。


作者: 乖睡觉咯    时间: 2013-8-21 23:42
相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,
    一般在代码块中对一些static变量进行赋值。
不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
    静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new
    一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。
作者: 若相守た不离    时间: 2013-8-22 17:23
执行顺序,你可以参考下
01.public class Test{  
02.    public Test(){  
03.        System.out.println("构造方法被执行 5");              
04.    }  
05.         
06.    {  
07.        System.out.println("实例代码块被执行 3");          //实例代码块   
08.    }  
09.         
10.    private TestInstance ti = new TestInstance();          //实例变量   
11.         
12.    private static TestInstance ti1 = new TestInstance(1); //静态变量   
13.         
14.    static{  
15.        System.out.println("静态代码块被执行 2");          //静态代码块   
16.    }  
17.        
18.    public static void main(String[] args){  
19.        new Test();  
20.    }  
21.        
22.}  
23.  
24.class TestInstance{  
25.    public TestInstance(){  
26.        System.out.println("实例变量被构造 4");  
27.    }  
28.  
29.    public TestInstance(int i){  
30.        System.out.println("静态变量被构造 1");  
31.    }  
32.}
作者: 若相守た不离    时间: 2013-8-22 17:24
顺序为12345
作者: 吴光新    时间: 2013-8-22 17:51
楼主以上回答能解决你的问题吗
作者: Twinboss    时间: 2013-8-22 20:52
恩,谢谢,长知识了,嘿嘿




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2