首页 > 其他分享 >静态初始化块的执行顺序

静态初始化块的执行顺序

时间:2022-10-04 15:12:19浏览次数:42  
标签:初始化 顺序 静态 System Mid println out

如果定义初始化块时使用了static修饰符,则变成了静态初始化块。静态初始化块时类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行。

因此静态初始化块总是比普通初始化块先执行。

 

与普通初始化块类似的是,系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,而且还会一直上溯到java.lang.Object类,先执行java.lang.Object类中的静态初始化块,然后执行其父类的静态初始化块,最后才执行该类的静态初始化块。经过这个过程,才完成了该类的初始化过程。只有当类初始化完成后,才可以在系统中使用这个类,包括访问类method、类Field,或者用这个类来创建实例

 

代码示例:


class Root
{
static
{
System.out.println("Root的静态初始化块");
}
{
System.out.println("Root的普通初始化块");
}
public Root()
{
System.out.println("Root的无参数的构造器");
}
}
class Mid extends Root
{
static
{
System.out.println("Mid的静态初始化块");
}
{
System.out.println("Mid的普通初始化块");
}
public Mid()
{
System.out.println("Mid的无参数的构造器");
}
public Mid(String msg)
{
//通过this调用同一类中重载的构造器
this();
System.out.println("Mid的带参数构造器,其参数值:" + msg);
}
}
class Leaf extends Mid
{
static
{
System.out.println("Leaf的静态初始化块");
}
{
System.out.println("Leaf的普通初始化块");
}
public Leaf()
{
//通过super调用父类中有一个字符串参数的构造器
super("Java初始化顺序演示");
System.out.println("执行Leaf的构造器");
}

}

public class TestStaticInitializeBlock
{
public static void main(String[] args)
{
new Leaf();

}
}

运行结果

 

标签:初始化,顺序,静态,System,Mid,println,out
From: https://www.cnblogs.com/lxh-666/p/16753776.html

相关文章

  • 排序只要按顺序走就一定没问题
    只要遵循第一个先和第二个比较,第二个在和第三个比较,就不用再第一个和第三个比较了三个都比:#include<iostream>#include<cmath>#include<algorithm>usingnamespac......
  • Java字段初始化的规律
    JAVA字段的初始化规律1.类的构造方法(1)“构造方法”,也称为“构造函数”,当创建一个对象时,它的构造方法会被自动调用。构造方法与类名相同,没有返回值。(2)如果类没有定......
  • 静态初始化块的执行顺序
    单个类中初始化块、静态初始化块、构造器的执行顺序。无论怎么写,先执行第一个的是静态初始化块,第二个是初始化块,第三个是构造器,如果写了多个的时候从上往下执行,比如写了多......
  • 013——static静态关键字
    1.static静态关键字1.1static是什么,static修饰成员变量的用法1.1.1static是什么?static是静态的意思,可以用来修饰成员变量、成员方法。static修饰成员变量之后称为......
  • 顺序栈的双端储存
    顺序栈的双端储存1.双端栈在栈的共享技术中最常用的是两个栈的共享技术即双端栈:主要利用了栈“栈底位置不变,而栈顶位置动态变化”的特性。首先为两个栈申请一个共享的一......
  • systemverilog中的静态变量static和动态变量automatic
    本文参考:SystemVerilog静态变量和动态变量_行走的BUG永动机的博客-CSDN博客_systemverilog静态变量和动态变量systemverilog之Automatic-腾讯云开发者社区-腾讯云(ten......
  • Java学习之:静态初始化块、包、参数传递机制
    关键字static和静态初始化块static普通变量和方法从属于对象,而static修饰的成员变量和方法从属于类。静态方法:被static修饰的方法叫做静态方法,又被称为类方法。非static的方......
  • Hexo搭建个人静态博客网站
    前言前段时间博客园整改,许多博客无法查看,偶然的机会接触到了许多博客框架,可用来快速搭建一个静态博客网站;最后选择使用hexo,看了不少大佬的教程,觉得挺有意思的,于是也总结了一......
  • 静态资源放行
    在demo02的基础上开发在springboot整合security的项目中,是不能直接通过控制层跳转到resource目录下的html页面的只有我们在security配置类中指定了403页面或登录页面时,才能......
  • Window11 WSL2 添加静态IP
    基于评论https://github.com/microsoft/WSL/issues/4210#issuecomment-648570493的思路,我给出一个实现静态IP效果的变通方法。在WSL2Linux中创建一个脚本文件vim/h......