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

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

 /**
* @author zhengbinMac
*/
public class Test2 {
static {
System.out.println("静态块");
}
public Test2() {
System.out.println("构造方法");
}
{
System.out.println("构造块");
}
public void ok() {
System.out.println("OK()");
}
public static void main(String[] args) {
System.out.println("main()");
Test2 t2 = new Test2();
System.out.println("new Test2");
t2.ok();
}
}
/*
静态块
main()
构造块
构造方法
new Test2
OK()
*/

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

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

 /**
* @author zhengbinMac
*/
public class Son extends father {
{
System.out.println("Son-构造块");
}
static {
System.out.println("Son-静态块");
}
public Son() {
System.out.println("Son-构造方法");
} @Override
public void t1() {
System.out.println("Son()");
}
public static void main(String[] args) {
System.out.println("main()");
Son t = new Son();
t.t1();
}
} class father {
{
System.out.println("Father-构造块");
} static {
System.out.println("Father-静态块");
} public father() {
System.out.println("Father-构造方法");
} public void t1() {
System.out.println("Father()");
}
}
// 输出
/*
Father-静态块
Son-静态块
main()
Father-构造块
Father-构造方法
Son-构造块
Son-构造方法
Son()
*/

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

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

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

Java类的执行顺序的更多相关文章

  1. [1]朝花夕拾-JAVA类的执行顺序

    最近在温习java的基础,刷题刷到java的执行顺序,很汗颜,答案回答错了! 题目类似如下: package com.phpdragon.study.base; public class ExecOr ...

  2. 图示Java类的初始化顺序

    Java类的初始化顺序   在开发中,知道Java类的初始化顺序才能让我们更加清楚地掌握程序的执行流程.先把结论贴出来,Java里,从图里的1~6,分别按顺序执行.   以下为代码验证阶段,一共三个类 ...

  3. Java基础系列5:Java代码的执行顺序

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.构造方法 构造方 ...

  4. Java——Java代码的执行顺序

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.构造方法 构造方 ...

  5. java代码块执行顺序

    父类 public class Father { public Father() { System.out.println("父类构造PUBLIC father"); } stat ...

  6. java类的初始化顺序

    在java中,当我们new一个对象时,对象中的成员,初始化块以及构造方法的加载是有一定的顺序的,看下面一副图: 一.单类(无基类)下的初始化顺序: public class Parent { stat ...

  7. Java的初始化执行顺序(父类static变量->子类static变量->父类成员变量->父类构造器->成员变量->构造器->main函数)

    1. 引言 了解Java初始化的顺序,有助于理解Java的初始化机制和内存机制. 顺序:父类static变量->子类static变量->父类成员变量->父类构造器->成员变量- ...

  8. java初始化块执行顺序

    java中初始化块的执行顺序在构造器之前,多个初始化块之间定义在前的先执行.如下: public class InitialBlockTest { // The first one { System. ...

  9. JAVA变量的执行顺序

    对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: package ...

随机推荐

  1. 以Server模式启动Derby服务竟然抛套接字权限异常

    以Server模式启动Derby服务竟然抛套接字权限异常:access denied ("java.net.SocketPermission" "localhost:15 ...

  2. hdu 4559 涂色游戏(对SG函数的深入理解,推导打SG表)

    提议分析: 1 <= N <= 4747 很明显应该不会有规律的,打表发现真没有 按题意应该分成两种情况考虑,然后求其异或(SG函数性质) (1)找出单独的一个(一列中只有一个) (2)找 ...

  3. P2P通信标准协议(一)之STUN

    前一段时间在P2P通信原理与实现中介绍了P2P打洞的基本原理和方法,我们可以根据其原理为自己的网络程序设计一套通信规则, 当然如果这套程序只有自己在使用是没什么问题的.可是在现实生活中,我们的程序往往 ...

  4. Spring框架学习之第8节

    <bean id=”foo” class=”…Foo”> <property name=”属性”> <!—第一方法引用--> <ref bean=”bean对 ...

  5. 如何用crontab运行一个图形化界面的程序

    crontab是linux中定时任务的 执行crontab -e可以编辑定时列表(export DISPLAY=:0 指定显示器或者export DISPLAY=localhost:0) 15 13 ...

  6. [AFN]AFNetworking错误总结

    1. 错误打印  code=-1016 filed: text/html 错误原因:AFN默认不能解析请求回来的text/html数据 解决办法: AFN3.0的请看这里 AFHTTPSessionM ...

  7. CentOS系统中常用查看日志命令

    cat tail -f 日 志 文 件 说    明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安 ...

  8. RMI、Hessian、Burlap、Httpinvoker、WebService的比较

    RMI.Hessian.Burlap.Httpinvoker.WebService的比较 2(转)     [2]Java远程调用方法性能比较 [IT168技术]现在,Java远程调用方法很多,各种方 ...

  9. dojo 十一 jsonp

    官方教程:Getting Jiggy with JSONPDojo对Ajax实现的框架XHR的功能很强大,但 XHR 框架的函数有一问题就是不能跨域访问,浏览器不允许 XHR 对象访问其他域的站点.此 ...

  10. serialize-and-deserialize-bst

    https://leetcode.com/problems/serialize-and-deserialize-bst/ 1. 用到Java Queue接口, // LinkedList实现了Queu ...