java 静态成员 实例成员变量_java对象实例化时的顺序(静态成员变量、静态代码块、成员变量、方法块加载、构造函数加载)...
周末补了一下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对象实例化时的顺序(静态成员变量、静态代码块、成员变量、方法块加载、构造函数加载)...相关推荐
- 类和对象运行时在内存里是怎么样的?各种变量、方法在运行时是怎么交互的?
转载自 类和对象运行时在内存里是怎么样的?各种变量.方法在运行时是怎么交互的? 在回答这个问题之前先了解一下Java的一些基础知识. 我们知道Java程序运行在虚拟机环境里,那我们先看一下虚拟机的 ...
- java实例化的方式_Java对象实例化的6种方式
Java对象实例化有以下6种方式: 1.采用new关键字 SimpleBean simpleBean = new SimpleBean(); 2.采用Class.forName("Simp ...
- java class类型参数_使用Class对象实例化Java类型参数/ generic
如何实例化Java泛型对象,该对象仅接受类或参数给出的类型参数宾语? 例如: 通常,可以使用以下语法实例化Integer对象的ArrayList: ArrayList foo = new ArrayL ...
- java的头怎么写_JAVA对象布局之对象头(Object Header)
由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能 .在学习并发编程知识synchronized时,我们总是难以理解其实 ...
- java 别名现象_引用与对象赋值时的别名现象
简明现代魔法 -> Java编程语言 -> 引用与对象赋值时的别名现象 引用与对象赋值时的别名现象 2009-09-08 要对一个对象进行操作,我们真正能操作的是该对象的引用. 所以,如果 ...
- java 对象引用 弱引用吗_Java对象的强引用、软引用、弱引用和虚引用 笔记
从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 1.强引用 使用最普遍的引用.如果一个对象具有强 ...
- java面向对象计算器怎么写_Java对象简单实用案例之计算器实现代码
对 Java中的对象与属性,方法的使用,简单写了个案例 import java.util.Scanner; class Calculste { int a; //定义两个整数 int b; Strin ...
- 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 ...
- 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 ...
- java线程运行无限次_java程序运行时到底有多少个活跃线程
先贴上最原始的代码,疑惑的开始. public class Solution { public static void main(String[] args) { T t1 = new T(); T ...
最新文章
- vue element的若干问题
- python模块编程教程_python进阶教程之模块(module)介绍
- 2BizBox-ERP那点事儿系列之4
- JSON Web Tokens(JWT)
- 定时跑视图往另外一张表添加数据_程序猿删库跑路示例
- Sublime Text 2报 Decode error - output not utf-8 错误的解决办法
- python计算存款复利计算器_复利计算器循环
- java 去掉 t_[Java教程]LocalDateTime去掉T
- 详细分析已遭利用的 Desktop Window Manager 0day
- 关于网站购物车的实现的思考
- 二叉树遍历之层次遍历算法入门详解
- 巨杉数据库入选Gartner报告,中国数据库原创力量崛起
- 草图大师 2019 破解版|草图大师Sketchup pro 2019中文破解版64位下载 v19.0(附Sketchup 2019破解补丁)
- 莫烦 Tensorflow
- 加拿大高中计算机课,全面解析加拿大高中课程
- win7 thinkpad 屏幕旋转 快捷键 与 eclipse冲突
- WePhone手机软件已下架 疑因资金问题导致无法使用
- Iterative Reweighted Least Squares
- ROS——UDRF机器人模型优化(xacro)
- 单片机同一按键实现长按开关机,短按换挡,并带有记忆功能