1,静态变量、静态代码块、变量、普通代码块、mian方法、构造函数的执行顺序是:(静态变量、静态代码块)>    main方法 >(变量、普通代码块)>构造函数。

2,如果子类调用了父类,那么执行顺序是:(父类静态变量、父类静态代码块)>(子类静态变量、子类静态代码块)> main方法 >(父类变量、父类代码块)> 父类构造方法 >(子类变量、子类代码块)> 子类构造方法

3,子类继承父类简单举例说明:也就是说此时的运行顺序为:

父类静态块

自身静态块

父类块

父类构造器

自身块

自身构造器

/**

* 测试父类和子类代码执行顺序

*/

public class Father1 {

/**

* 父类静态代码块

*/

static {

System.out.println("父类1静态代码块");

}

/**

* 父类块

*/

{

System.out.println("父1类块");

}

/**

* 父类构造方法

*/

public Father1(){

System.out.println("父1类构造方法");

}

}

子类代码:

/**

* 测试父类和子类代码执行顺序

*/

public class Child1 extends Father1{

/**

* 子类静态代码块

*/

static {

System.out.println("子1类静态代码块");

}

/**

* 子类代码块

*/

{

System.out.println("子1类块");

}

/**

* 子类构造方法

*/

public Child1() {

System.out.println("子1类构造方法");

}

public static void main(String args[]){

System.out.println("main1方法");

/**

* 实例化

*/

Child1 c = new Child1();

}

}

执行结果是:

父类1静态代码块

子1类静态代码块

main1方法

父1类块

父1类构造方法

子1类块

子1类构造方法

4,子类2集成父类2,并且在类中实例化父类1。通过下面的例子可以知道静态变量和静态代码块的执行顺序,是按照他们在类中的顺序来执行的。那么执行顺序会是:父类2的静态--子类2的静态--main方法--父类2的常量--父类2的构造--子类2的常量--父类1的静态--父类1的常量-父类1的构造--子类2的构造。也就是说此时的运行顺序为:

父类2静态块

自身静态块

父类2块

父类2构造器

自身块

父类1静态块

父类1块

父类1构造器

自身构造器

父类:

/**

* 测试父类和子类代码执行顺序

*/

public class Father2 {

public static String F_STATIC_FILED = "父2类静态变量";

public String F_FILED = "父2类普通变量";

/**

* 父类静态代码块

*/

static {

System.out.println(F_STATIC_FILED);

System.out.println("父2类静态代码块");

}

/**

* 父类块

*/

{

System.out.println(F_FILED);

System.out.println("父2类块");

}

/**

* 父类普通方法

*/

public void f_method(){

System.out.println("父2类普通方法");

}

/**

* 父类构造方法

*/

public Father2(){

System.out.println("父2类构造方法");

}

}

子类:

/**

* 测试父类和子类代码执行顺序

*/

public class Child2 extends Father2{

public static String C_STATIC_FILED = "子2类静态变量";

public String C_FILED = "子2类普通变量";

/**

* 子类静态代码块

*/

static {

System.out.println(C_STATIC_FILED+"cccc");

System.out.println("子2类静态代码块");

}

/**

* 子类代码块

*/

{

System.out.println("子2类块");

}

/**

* 子类构造方法

*/

public Child2() {

System.out.println("子2类构造方法");

}

public static void main(String args[]){

System.out.println("main2方法");

/**

* 实例化

*/

Child2 c = new Child2();

}

Father1 f2 = new Father1();

}

执行结果是:

父2类静态变量

父2类静态代码块

子2类静态变量

子2类静态代码块

main2方法

父2类普通变量

父2类块

父2类构造方法

子2类块

父类1静态代码块

父1类块

父1类构造方法

子2类构造方法

5:总结如下:

类初始化时构造函数调用顺序:

(1)初始化对象的存储空间为零或null值;

(2)调用父类构造函数;

(3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;

(4)调用本身构造函数。

在我们的程序中,实例化一个类对象的时候,运行顺序为:

父类静态块

父类构造器

本类中的块

本类的构造器

java构造函数的执行顺序,java构造函数和初始化函数的执行顺序相关推荐

  1. java设计一个顺序表类的成员函数_顺序表代码讲解以及实现

    用C语言编写一个有关顺序表的程序代码 创建一个顺序表,其数据元素类型为整型: 在该顺序表中插入数据(#include #include #define MaxSize 50 typedef char ...

  2. C++main函数的参数介绍以及如何在main函数前执行一段代码

    C++中参数介绍:https://www.cnblogs.com/jisongxie/p/7892366.html C++中主函数的执行过程以及如何在main函数前执行一段代码:https://www ...

  3. java先执行static还是构造函数_【Java基础】类的实例化、static、父类构造函数执行顺序...

    重温java基础,以免自己以后犯原则性错误,这是最基本,最基础的东西. 先看结论: 一个类的实例化过程: 1,首先会执行类中static代码块(不管代码块是否在类的开头还是末尾处),如果这个类有父类, ...

  4. java 父类的构造函数_java中为什么父类构造函数必须执行?

    final 在java中,final可以用来修饰类,方法和变量(成员变量或局部变量).下面将对其详细介绍. 1.1 修饰类 当用final修饰类的时,表明该类不能被其他类所继承.当我们需要让一个类永远 ...

  5. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  6. java构造函数的特点_java中构造函数的特点是什么?图文解析

    在现代社会信息化高速发展的今时今日,几乎每个人都在为了更好地生活而努力拼搏着.为了更高的薪资,很多人开始学习java编程语言.今天就来为大家介绍java中构造函数的特点是什么,并且通过图片为大家解析. ...

  7. getvalue函数怎么使用_Java中的构造函数——通过示例学习Java编程(14)

    作者:CHAITANYA SINGH 来源:通过示例学习Java编程(14):Java中的构造函数-方家话题 构造函数是用来初始化新创建的对象的代码块.构造函数类似于java中的实例方法(Instan ...

  8. 什么是java构造函数_什么是java构造函数

    构造函数是面向对象中的一员,构造函数可以叫做构造器,它的函数名与类名相同,不用定义返回值类型,也没有具体的返回值.构造函数是在构建创造时对象时调用函数,作用是可以给对象进行初始化,创建对象都必须要通过 ...

  9. java 线程的构造函数_深入理解Thread构造函数

    本文参考汪文君著:Java高并发编程详解. 1.线程的命名 在构造现成的时候可以为线程起一个名字.但是我们如果不给线程起名字,那线程会有一个怎样的命名呢? 这里我们看一下Thread的源代码: pub ...

最新文章

  1. 请参阅:Chrome开发者工具中的悬停状态
  2. java怎么读取word某一页内容_Word页码设置的3点技巧,提高排版效率,减少不必要烦恼...
  3. UOJ #578. 收集卡片
  4. 作为一个死忠粉,我的 IntelliJ IDEA 一直都是这样来设置的,效果很棒!
  5. 教你如何塑造JavaScript牛逼形象
  6. usb连接不上 艾德克斯电源_工程师,USB与SPI之间如何通信?什么芯片方案可以实现...
  7. 仿照七牛云图片处理类实现的C#帮助类
  8. python拦截tcp数据包_发送低级原始tcp数据包python
  9. testbench学习笔记(转载)
  10. UnityWebGL发布包问题及IIS配置
  11. 我从冯·诺依曼计算机体系,追溯到了JVM,一切原来如此
  12. 侯捷-C++面向对象高级开发(操作符重载与临时对象)
  13. java画篮球_PS教程!手把手教你绘制炫酷的科比篮球海报
  14. 为什么微信连接不上服务器失败怎么回事啊,微信为什么一直提示连接失败请检查网络设置...
  15. Flutter网络请求方式总结
  16. 谷歌生物医学专用翻译_一个可以快速翻译浏览英文文献的工具,拿走不谢!
  17. AVS3变换系数编码:SRCC
  18. 云南计算机网络技术专业培训学院,云南哪些大学有计算机网络技术专业
  19. Whale News | 帷幄 CEO 叶生晅入围36氪「X·36Under36」榜单
  20. 一个简单的购物车加减按钮

热门文章

  1. houghlinesp找到多条直线_拿什么拯救焦虑的你,一个有勇气的人终将找到他的路...
  2. 以计算机为题写一篇英语作文,请以“未来的钢笔”为题写一篇不少于80词的英语作文...
  3. 机器学习sklearn
  4. JAVA中的按值传递
  5. 读书笔记----10日摘抄整理(11)
  6. iOS 关于TouchID指纹解锁的实现
  7. 调试中除了在URL上加时间戳外,如何避免js、css被返回304状态?
  8. 【转】PLI是什么以及怎么用
  9. 如何保证Session值不丢失
  10. 篮球战术谈之经典配合