博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java类的执行顺序
阅读量:4649 次
发布时间:2019-06-09

本文共 1783 字,大约阅读时间需要 5 分钟。

  在Java中一个类包括:构造块、构造方法、静态块、main方法、普通方法。

  通过下面的例子将看出一个类中各种方法的执行顺序:

1 /** 2  * @author zhengbinMac 3  */ 4 public class Test2 { 5     static { 6         System.out.println("静态块"); 7     } 8     public Test2() { 9         System.out.println("构造方法");10     }11     {12         System.out.println("构造块");13     }14     public void ok() {15         System.out.println("OK()");16     }17     public static void main(String[] args) {18         System.out.println("main()");19         Test2 t2 = new Test2();20         System.out.println("new Test2");21         t2.ok();22     }23 }24 /*25 静态块26 main()27 构造块28 构造方法29 new Test230 OK()31 */

  可以得出:首先JVM加载这个类(执行静态块)-》执行类的入口main方法-》构造块-》构造方法-》执行调用方法

  如果有父类呢?JVM首先会检查当前类的父类是否加载,若没有则加载其父类,然后再加载自己,通过下面的测试说明:

1 /** 2  * @author zhengbinMac 3  */ 4 public class Son extends father { 5     { 6         System.out.println("Son-构造块"); 7     } 8     static { 9         System.out.println("Son-静态块");10     }11     public Son() {12         System.out.println("Son-构造方法");13     }14 15     @Override16     public void t1() {17         System.out.println("Son()");18     }19     public static void main(String[] args) {20         System.out.println("main()");21         Son t = new Son();22         t.t1();23     }24 }25 26 class father {27     {28         System.out.println("Father-构造块");29     }30 31     static {32         System.out.println("Father-静态块");33     }34 35     public father() {36         System.out.println("Father-构造方法");37     }38 39     public void t1() {40         System.out.println("Father()");41     }42 }
// 输出/*Father-静态块Son-静态块main()Father-构造块Father-构造方法Son-构造块Son-构造方法Son()*/

  其中静态块,用static关键字声明,JVM加载类时执行,仅执行一次。

  其中构造块,类中直接用{}声明,在每次创建对象时执行。

  注意,静态块会按照声明的顺序执行。如下面这两个例子:

转载于:https://www.cnblogs.com/zhengbin/p/5671163.html

你可能感兴趣的文章
JAVA设计模式之观察者模式
查看>>
MySQL的循环语句使用总结
查看>>
align-conten和align-items之间的区别
查看>>
Java
查看>>
防止SQL注入的登录页面
查看>>
生成和解析txt文件
查看>>
stm32F429启动时钟配置
查看>>
正则表达式移除首部尾部多余字符
查看>>
iOS截取视频缩略图的两种方法
查看>>
柯里化函数之Javascript
查看>>
WTL安装
查看>>
我的软考之路(四)——数据结构和算法(2)树和二叉树
查看>>
c语言发挥帕斯卡三角
查看>>
UIControl-IOS开发
查看>>
Chord算法(原理)
查看>>
扩展点(持续更新......)
查看>>
TortoiseSVN服务器ip地址修改后如何使用
查看>>
flex RemoteObject 的两种使用方法
查看>>
Oracle EBS R12多组织(多OU)访问架构
查看>>
小强的HTML5移动开发之路(2)——HTML5的新特性
查看>>