A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天在学习了实例代码块以及static 代码块,但是还是不怎么懂,请问,它俩之间都有什么区别啊?
都作用在什么地方?谢谢回复。。。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,
    一般在代码块中对一些static变量进行赋值。
不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
    静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new
    一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
执行顺序,你可以参考下
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.}

评分

参与人数 1技术分 +2 收起 理由
黄兴旺 + 2 很给力!

查看全部评分

回复 使用道具 举报 1 0
顺序为12345
回复 使用道具 举报
楼主以上回答能解决你的问题吗
回复 使用道具 举报
恩,谢谢,长知识了,嘿嘿
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马