周末补了一下java对象实例化的顺序,用几个测试案例记录下:

测试代码:

HelloA

HelloB

运行结果

子类继承父类,运行顺序:

父静态——>子静态——>父代码块——>父构造方法——>子代码块——>子构造方法

若在子类的静态块new A 运行结果如下:

HelloB

运行结果

运行顺序:

父静态——>子静态——>父代码块——>父构造方法——>(new A 无父类静态,因为只运行一次)父代码块——>父构造方法——>子代码块——>子构造方法

同理,在子类块new A和子类构造方法new A 运行结果如下:

HelloB

运行结果

父静态——>子静态——>父代码块——>父构造方法——>子代码块——>(new A 无父类静态,因为只运行一次)父代码块——>父构造方法——>子构造方法

HelloB

运行结果

父静态——>子静态——>父代码块——>父构造方法——>子代码块——>子构造方法——>(new A 无父类静态,因为只运行一次)父代码块——>父构造方法

上面测试代码是无成员变量与静态变量的,下面测试代码加上。

测试代码2:

HelloA

HelloB

运行结果

运行顺序:

父类静态成员变量——>父类静态方法块——>子类静态成员变量——>子类静态方法块——>父类成员变量——>父类方法块——>父类构造方法——>子类成员变量——>子类方法块——>子类构造方法

总结:

Java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下:

1、首先加载要创建对象的类及其直接与间接父类。

2、在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行。

3、需要的类加载完成后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量的初始化,非静态语句块的执行,在加载时按代码的先后顺序进行。

4、最后执行构造器,构造器执行完毕,对象生成。

所以对象实例化时的顺序:

1,父类的静态成员变量和静态代码块加载

2,子类的静态成员变量和静态代码块加载

3,父类成员变量和方法块加载

4,父类的构造函数加载

5,子类成员变量和方法块加载

6,子类的构造函数加载

java 静态成员 实例成员变量_java对象实例化时的顺序(静态成员变量、静态代码块、成员变量、方法块加载、构造函数加载)...相关推荐

  1. 类和对象运行时在内存里是怎么样的?各种变量、方法在运行时是怎么交互的?

    转载自   类和对象运行时在内存里是怎么样的?各种变量.方法在运行时是怎么交互的? 在回答这个问题之前先了解一下Java的一些基础知识. 我们知道Java程序运行在虚拟机环境里,那我们先看一下虚拟机的 ...

  2. java实例化的方式_Java对象实例化的6种方式

    Java对象实例化有以下6种方式: 1.采用new关键字  SimpleBean simpleBean = new SimpleBean(); 2.采用Class.forName("Simp ...

  3. java class类型参数_使用Class对象实例化Java类型参数/ generic

    如何实例化Java泛型对象,该对象仅接受类或参数给出的类型参数宾语? 例如: 通常,可以使用以下语法实例化Integer对象的ArrayList: ArrayList foo = new ArrayL ...

  4. java的头怎么写_JAVA对象布局之对象头(Object Header)

    由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能 .在学习并发编程知识synchronized时,我们总是难以理解其实 ...

  5. java 别名现象_引用与对象赋值时的别名现象

    简明现代魔法 -> Java编程语言 -> 引用与对象赋值时的别名现象 引用与对象赋值时的别名现象 2009-09-08 要对一个对象进行操作,我们真正能操作的是该对象的引用. 所以,如果 ...

  6. java 对象引用 弱引用吗_Java对象的强引用、软引用、弱引用和虚引用 笔记

    从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 1.强引用 使用最普遍的引用.如果一个对象具有强 ...

  7. java面向对象计算器怎么写_Java对象简单实用案例之计算器实现代码

    对 Java中的对象与属性,方法的使用,简单写了个案例 import java.util.Scanner; class Calculste { int a; //定义两个整数 int b; Strin ...

  8. java程序设计实例教程 刘志成_Java程序设计实例教程教学课件作者刘志成章节05_Java图形用户界面技术.PPT...

    i:Internet g:grid,网格 i:Internet g:grid,网格 i:Internet g:grid,网格 i:Internet g:grid,网格 i:Internet g:gri ...

  9. java ee实例详解_Java EE企业级编程开发实例详解

    第1章 javaee开发基础 9 q5 @! t4 \9 t. }: K# R1 }1.1 javaee6简介 / p* T1 g! F  K3 ^4 j3 |1.1.1学习 javaee的意义 5 ...

  10. java线程运行无限次_java程序运行时到底有多少个活跃线程

    先贴上最原始的代码,疑惑的开始. public class Solution { public static void main(String[] args) { T t1 = new T(); T ...

最新文章

  1. vue element的若干问题
  2. python模块编程教程_python进阶教程之模块(module)介绍
  3. 2BizBox-ERP那点事儿系列之4
  4. JSON Web Tokens(JWT)
  5. 定时跑视图往另外一张表添加数据_程序猿删库跑路示例
  6. Sublime Text 2报 Decode error - output not utf-8 错误的解决办法
  7. python计算存款复利计算器_复利计算器循环
  8. java 去掉 t_[Java教程]LocalDateTime去掉T
  9. 详细分析已遭利用的 Desktop Window Manager 0day
  10. 关于网站购物车的实现的思考
  11. 二叉树遍历之层次遍历算法入门详解
  12. 巨杉数据库入选Gartner报告,中国数据库原创力量崛起
  13. 草图大师 2019 破解版|草图大师Sketchup pro 2019中文破解版64位下载 v19.0(附Sketchup 2019破解补丁)
  14. 莫烦 Tensorflow
  15. 加拿大高中计算机课,全面解析加拿大高中课程
  16. win7 thinkpad 屏幕旋转 快捷键 与 eclipse冲突
  17. WePhone手机软件已下架 疑因资金问题导致无法使用
  18. Iterative Reweighted Least Squares
  19. ROS——UDRF机器人模型优化(xacro)
  20. 单片机同一按键实现长按开关机,短按换挡,并带有记忆功能

热门文章

  1. linux mysql5.7 实例初始化_mysql 5.7多实例单配置文件安装
  2. Android SQLite用sql语句进行增删改查
  3. 静态代理和动态代理的代码笔记
  4. STM32 USART 波特率计算
  5. python实现希尔排序(已编程实现)
  6. vs2015 动态链接库问题
  7. Java进阶03 IO基础
  8. 关于VB日期与数字的转换(一)
  9. C++网络编程实例之多个客户端交互(多线程)
  10. 为什么BGP需要TCP三次握手?