类加载的常见加载顺序

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
容器镜像服务 ACR,镜像仓库100个 不限时长
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 这段内容是关于Java代码执行顺序的示例。代码展示了类的静态代码块、构造器和局部构造块的执行优先级:静态代码块先于构造器和局部构造块执行,并且只在类加载时运行一次。主函数执行前,会依次看到静态代码块、局部构造块(初始化变量)和构造器的输出。列表中总结了执行顺序和特点。
public class CodeBlockDemo 
{
    {
        System.out.println("初始化代码");
    }

    CodeBlockDemo()
    {
        System.out.println("构造器");
    }   

    static
    {
        System.out.println("静态代码块");
    }
    
    //运行后输出结果?
    public static void main(String[] args) 
    {   
        {
            int a = 10;
            //10
            System.out.println("局部代码块");
        }

        new CodeBlockDemo();
        new CodeBlockDemo();
        new CodeBlockDemo();
    }
}

输出:

静态代码块
局部代码块

初始化代码
构造器

初始化代码
构造器

初始化代码
构造器

总结:

  • 静态代码块 > 局部(构造)代码块 > 构造器(构造方法)
  • 随着类的加载而执行,而且只一次, 优先于主函数执行
相关文章
|
5月前
|
Java
类加载器以及类的加载过程
这篇文章讨论了Java中的类加载器机制以及类的加载过程。
类加载器以及类的加载过程
|
2月前
|
Java
类加载顺序
本题考察Java类加载顺序及多态特性。类加载时,先加载父类静态块,再加载子类静态块,随后按顺序加载父类非静态块、父类构造函数、子类非静态块及子类构造函数。多态情况下,`Base b = new Sub();` 表现为编译时父类特性,运行时子类特性。若子类覆盖父类方法,在父类构造函数中调用该方法时,实际调用的是子类的方法,但此时子类未完全初始化,导致子类变量未赋值,故输出 `null`。示例代码中,因子类构造器未显式调用父类构造器,导致编译错误,需添加 `super("s");` 解决。
22 0
|
4月前
|
Arthas 前端开发 Java
类加载器 超详解:什么是类加载器,类加载器作用及应用场景,类加载时机,类加载的完整过程,类加载器分类
类加载器 超详解:什么是类加载器,类加载器作用及应用场景,类加载时机,类加载的完整过程,类加载器分类
类加载器 超详解:什么是类加载器,类加载器作用及应用场景,类加载时机,类加载的完整过程,类加载器分类
|
5月前
|
Java
1.常见加载顺序
这段代码展示了一个名为 `CodeBlockDemo` 的Java公共类。该类包含多种代码块:初始化块、构造函数、静态块及局部块,并演示了它们的执行顺序:静态代码块 > 初始化代码块/构造代码块 > 构造函数。当创建 `CodeBlockDemo` 实例时,会依次显示“初始化代码”、“构造器”。静态代码块随类加载仅执行一次,优先于主函数执行。主函数中创建三个实例,展示了构造过程。
|
Java
自定义类加载器实现热加载
自定义类加载器实现热加载
109 0
JVM-常见加载顺序
JVM-常见加载顺序
|
8月前
|
存储 安全 Java
JVM类加载(类加载过程、双亲委派模型)
JVM类加载(类加载过程、双亲委派模型)
|
存储 安全 Java
类加载器与类的加载过程
类加载器与类的加载过程
|
缓存 前端开发 Java
37. 请你详细说说类加载流程,类加载机制及自定义类加载器 中
37. 请你详细说说类加载流程,类加载机制及自定义类加载器 中
132 0
37. 请你详细说说类加载流程,类加载机制及自定义类加载器 中