静态块、自由块及构造函数的执行顺序
静态块和静态变量在类的加载时被执行;加载子类时,会预先加载父类,因此父类中如果有静态块,则最先执行之,然后立即执行子类的静态块;
如果一个类中有多个静态块,则按照编码的先后顺序执行
注:因为一个类只会被加载一次,所以每个静态块只会执行一次
自由块格式(又称“普通块”):
{
// statements;
}
自由块在类被实例化时执行
如果要实例化一个子类,那么它的构造函数会先实例化其父类。因此父类的自由块会先被执行,然后开始构造父类;父类的构造器执行完毕后,操作权返回给子类的构造器,此时开始执行子类的自由块,然后开始构造子类。
执行的顺序依次为:
父类静态块 → 子类静态块 → 父类自由块 → 父类构造函数 → 子类自由块 → 子类构造函数
/** Output:ACBDE*/class ClassA {public ClassA() {System.out.println("D");}{System.out.println("B");}}class Base extends ClassA {int i;public Base() {i = 10;System.out.println("E");}static {System.out.println("A");}}public class ClassB extends Base {public static void main(String[] args) {new ClassB();}static {System.out.println("C");}}
转载于:https://www.cnblogs.com/bluestorm/archive/2012/08/14/2638705.html
静态块、自由块及构造函数的执行顺序相关推荐
- 静态代码块、非静态代码块、构造函数三者执行顺序
主要探讨一下关于静态代码块,非静态代码块,构造函数的执行顺序. 如有错误,欢迎指出. 首先: 静态成员变量和静态代码块的优先级是一样的,先定义的先执行. 在创建一个对象的时候会执行非静态代码块和构造函 ...
- 初始化块和构造函数的执行顺序
问题 在Java中,如果初始化块在构造函数之后出现,是会先执行构造函数还是初始化块? 结论 先直接给结论:初始化块无论在哪里出现,都会先于构造函数执行,初始化块的执行顺序就是在代码中的先后顺序 测试代 ...
- 构造代码块、静态代码块、无参构造函数和有参构造函数的执行顺序
一直对构造代码块.静态代码块.无参构造函数和有参构造函数的执行顺序和执行次数混淆不清,所以记录一下它们的执行顺序以及执行次数.记录的不是很详细,留待补充. 代码: package com.yoko.t ...
- java构造函数的执行顺序,java构造函数和初始化函数的执行顺序
1,静态变量.静态代码块.变量.普通代码块.mian方法.构造函数的执行顺序是:(静态变量.静态代码块)> main方法 >(变量.普通代码块)>构造函数. 2,如果子类调用了 ...
- 构造代码块、静态代码块、构造方法的执行顺序
构造代码块.静态代码块.构造方法的执行顺序 牛客网上的一道题目: 通过查询,我写的这道题的解题步骤: package niukewang;/*** @author jxd* @date 2021/8/ ...
- java 构造函数的执行顺序
在此我用类似<Thinking in Java>的一个例子来说明 pakage com.yqs.test class Milk { publcic Milk() { System.out. ...
- 派生类构造函数的执行顺序
一个派生类构造函数的执行顺序如下: 虚拟基类的构造函数(多个虚拟基类则按照继承的顺序执行构造函数). 基类的构造函数(多个普通基类也按照继承的顺序执行构造函数). 对象的vptr被初始化: 成员对象构 ...
- 继承下构造函数的执行顺序
这里先给出结论,在贴出代码与执行结果~ 一个派生类构造函数的执行顺序如下: 第一步执行:虚拟基类的构造函数(多个虚拟基类则按照继承的顺序执行构造函数). 第二步执行:基类的构造函数(多个普通基类也按照 ...
- 静态代码块和静态变量执行顺序
从以下代码可以看出,静态代码块先执行与构造函数,但是静态代码块和静态变量之间的执行顺序决定于它们在代码中出现的顺序 public class Test5 {public static void mai ...
最新文章
- C#基础篇--文件(流)
- C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)
- SharePoint 2010 与 SQL Server 2012 报表服务集成
- 使用myeclipse建立maven项目(重要)
- 第一百零四期:搞清这些陷阱,NULL和三值逻辑再也不作妖
- 论文浅尝 | 基于属性嵌入的知识图谱实体对齐
- 迁徙图_虾米音乐上的原住民会迁徙去哪呢?
- 方法类型,模块与Stream流
- ORB_SLAM2+ZED 2
- 构造Linux流媒体服务器收藏
- 通俗易懂谈强化学习之Q-Learning算法实战
- 图解通信原理与案例分析-18:低功耗、远距离物联网无线通信技术LoRa概述与扩频通信的基本原理
- 输入法快捷键_关于日语输入法,你需要知道的一切
- centos7下载,centos iso文件下载
- 一元三次方程求解(求根) - 盛金公式法
- 如何使用robots.txt及其详解
- 基于convLSTM模型的雷达图像外推算法
- Oracle 数据库(一)—— Oracle 数据库基本介绍
- 通俗解读SGD、Momentum、Nestero Momentum、AdaGrad、RMSProp、Adam优化算法
- 【杂篇 · 电脑】买R9000P以来遇到的解决的和未解决的问题汇总