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

【转】 https://blog.csdn.net/qq_37896194/article/details/82154711
一、概念理解

1、静态代码块:在类中方法外出现,并加上static修饰;用于给类进行初始化,在类加载的时候就执行,并且只执行一次。

2、构造代码块:在类中方法外出现,多个构造方法相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行。

3、构造方法:方法名与类名相同;没有返回值;给对象的数据进行初始化


二、代码理解


  • public class TestStaticCon {



  •      public static int a = 0;







  •      static {



  •          a = 10;



  •          System.out.println("父类的静态代码块在执行a=" + a);



  •      }







  •      {



  •          a = 8;



  •          System.out.println("父类的非静态代码块在执行a=" + a);



  •      }







  •      public TestStaticCon() {



  •          this("a在父类带参构造方法中的值:" + TestStaticCon.a); // 调用另外一个构造方法



  •          System.out.println(a);



  •          System.out.println("父类无参构造方法在执行a=" + a);



  •      }







  •      public TestStaticCon(String n) {



  •          System.out.println(n);



  •          System.out.println(a);







  •      }







  •      public static void main(String[] args) {



  •          TestStaticCon tsc = null;



  •          System.out.println("!!!!!!!!!!!!!!!!!!!!!");



  •          tsc = new TestStaticCon();



  •      }



  • }


答案如下:



  • 父类的静态代码块在执行a=10



  • !!!!!!!!!!!!!!!!!!!!!



  • 父类的非静态代码块在执行a=8



  • a在父类带参构造方法中的值:10



  • 8



  • 8



  • 父类无参构造方法在执行a=8


由代码和答案可以看出:

三者的执行顺序为:静态代码块--->构造代码块--->构造方法



3 个回复

正序浏览
奈斯,加油加油
回复 使用道具 举报
奈斯,加油加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马