java 静态变量加载顺序_java 成员变量 静态变量代码块 静态代码快加载顺序
序言
基类A
类B继承实现了A类
1在new B一个实例时首先要进行类的装载。(类只有在使用New调用创建的时候才会被java类装载器装入)2,在装载类时,先装载父类A,再装载子类B
3,装载父类A后,完成静态动作(包括静态代码和变量,它们的级别是相同的,安装代码中出现的顺序初始化)4,装载子类B后,完成静态动作类装载完成,开始进行实例化1,在实例化子类B时,先要实例化父类A
2,实例化父类A时,先成员实例化(非静态代码)3,父类A的构造方法4,子类B的成员实例化(非静态代码)5,子类B的构造方法
先初始化父类的静态代码--->初始化子类的静态代码-->初始化父类的非静态代码--->初始化父类构造函数--->初始化子类非静态代码--->初始化子类构造函数
测试代码:
abstract class base
{
public int age=getNumber(100);
static{
System.out.println("base static block");
}
{
System.out.println("base nonstatic block");
}
static int sage=getNumber(50);
base(){
System.out.println(age);
System.out.println("base start");
draw();//会调用子类覆盖后的方法,这儿是0!
System.out.println("base end");
}
static int getNumber(int base){
System.out.println("base.getNumber int"+base);
return base;
}
public void draw(){
System.out.println("base.draw");
}
}
public class initializeOrder extends base{
public int age=getNumber(1001);
private int _radius=getNumber(10);
static int sage=getNumber(250);
static{
System.out.println("subclass static block");
}
{
System.out.println("subclass nonstatic block");
}
initializeOrder(int radius){
_radius=radius;
System.out.println(age);
draw();//这儿是1000
System.out.println("initializeOrder initialized");
}
public void draw(){
System.out.println("initializeOrder.draw "+_radius);
}
public static void main(String[] args) { // TODO Auto-generated method stub
new initializeOrder(1000);
}
}
输出为:
base static block
base.getNumber int50
base.getNumber int250
subclass static block
base.getNumber int100
base nonstatic block
100
base start
initializeOrder.draw 0
base end
base.getNumber int1001
base.getNumber int10
subclass nonstatic block
1001
initializeOrder.draw 1000
initializeOrder initialized
java 静态变量加载顺序_java 成员变量 静态变量代码块 静态代码快加载顺序相关推荐
- 加载顺序_JAVA类代码块和属性的加载顺序问题,不要以为静态块始终最先执行了!...
类代码块和属性的加载顺序问题,不要以为静态块始终最先执行了! 我们知道在一个类中,类的加载顺序为 静态代码块-->普通代码块-->构造代码块,感觉静态块始终是最先初始化的,其实并不是,下面 ...
- [转载] Java静态代码块/构造代码块/构造函数/静态变量/成员变量(相关示例)
参考链接: Java程序的输出| 构造函数 近期做牛客网的Java开发笔试题,发现这类型的题目较多,很容易混淆,特将相关概念和相关示例整理如下,供大家参考^_^ 1. 静态代码块在类加载时即运行,而且 ...
- java构造方法,构造代码块,静态代码块的执行顺序
构造方法,构造代码块,静态代码块的执行顺序 静态代码块:用static声明,jvm加载类时执行,仅执行一次 类中直接用{}定义,每次创建对象时执行 同级别的变量(static和普通变量)的执行顺序由代 ...
- Java代码块(代码块与静态代码块使用细节及调用顺序)
目录 1.代码块的基本介绍 2.静态代码块 类什么时候加载[重点] 创建对象实例时(new) 创建子类对象实例时,父类也会被加载 使用类的静态成员时(静态属性,静态方法) 3.代码块的使用小细节 普通 ...
- java 代码块(局部代码块、实例代码块、静态代码块、同步代码块)
1 引言 代码块是类的成分之一:成员变量,方法,构造器,代码块,内部类. 在Java中,使用 { } 括起来的代码被称为代码块(Code block) 1.1 代码块的分类 根据其位置和声明的不同,可 ...
- 静态代码块 构造代码块 构造方法的执行顺序
今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 执行顺序: 静态代码块>构造代码块>构造方法体 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构 ...
- java成员初始化顺序_Java成员初始化顺序
1. 初始化顺序 在类的内部,变量定义的先后顺序决定了初始化的顺序.即使变量散布于方法定义之间,他们仍会在任何方法(包括构造器)被调用之前初始化. 2. 静态成员初始化顺序 1⃣️初始化类的静态成员或 ...
- Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序...
实例化子类时,父类与子类中的静态代码块.实例代码块.静态变量.实例变量.构造函数的执行顺序是怎样的? 代码执行的优先级为: firest:静态部分 second:实例化过程 详细顺序为: 1.父类静态 ...
- Java中构造函数,静态代码块,构造代码块的执行顺序
静态代码块:用static声明,jvm加载类的时候执行,只执行一次. 构造代码块:由{}定义,每一次创建对象的时候执行. 构造函数:对象一建立就调用相应的构造函数. 静态代码块 1.它是随着类的加载而 ...
- day9 java的静态代码块和代码执行顺序
静态代码块 代码执行顺序 对于静态,不管是变量还是代码块.都是自上而下的.
最新文章
- Java反射原理学习之MethodHandle debug
- python递归实现_Python-递归实现
- 怎么看vray渲染进度_3dmax如何渲染光子,为什么会卡光子呢?
- 技术支持在大数据分析中的作用
- 机器学习知识点查漏补缺(朴素贝叶斯分类)
- Win10纯净版系统下载、制作和安装过程-联想客服建议
- 磁盘不见了只剩一个c盘_非常的奇葩,终于解决了硬盘从盘盘符消失的问题
- vux页面转换html,Vue 初学者使用 Vux 前端开发框架 - 文章教程
- matlab.emf,matlab的geoshow导出emf结果不是矢量图层
- 【番外篇】利率二叉树模型对冲
- 星球大战7:原力觉醒[Star Wars Episode VII:The Force Awakens]
- 2020大学研究生计算机排名,美国大学研究生计算机专业排名2020情况如何?
- excel中计算单元格值等于1的数量
- 01年北漂程序员年度总结,2021我废了,2022我重新做人了
- 最菜的我打卡的第二天
- MindMaster思维导图国内版更名“亿图脑图MindMaster”国产软件加速崛起!
- java is a_is_a()
- Java中用for循环输出九九乘法表
- 几款优秀的开源数据挖掘工具
- 小学-知识与能力【4】
热门文章
- vsCode个人设置
- (转)C#中的委托(Delegate)和事件(Event)
- 华为应用锁退出立即锁_华为P40系列三大安全锁,教你锁住你的隐私 - 企业资讯...
- Java基础知识之方法的通用格式、注意事项与带参数的方法
- 分布式事务最终一致性mysql_分布式事务最终一致性方案案例
- cookie可存的最大限制_一文梳理Web存储,从cookie,WebStorage到IndexedDB
- ajax引入html_Vue中发送ajax请求的库有哪些?
- Python按元组中第一个字符串升序第二个字符串降序排序
- C++ vector类的模拟实现
- 什么时候使用resulttype_柳州站东广场到底什么时候可以使用?