1.常见加载顺序

简介: 这段代码展示了一个名为 `CodeBlockDemo` 的Java公共类。该类包含多种代码块:初始化块、构造函数、静态块及局部块,并演示了它们的执行顺序:静态代码块 > 初始化代码块/构造代码块 > 构造函数。当创建 `CodeBlockDemo` 实例时,会依次显示“初始化代码”、“构造器”。静态代码块随类加载仅执行一次,优先于主函数执行。主函数中创建三个实例,展示了构造过程。

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();

   }

}

静态代码块

局部代码块


初始化代码

构造器


初始化代码

构造器

总结:
静态代码块 > 局部(构造)代码块 > 构造器(构造方法)
随着类的加载而执行,而且只一次, 优先于主函数执行

若有收获,就点个赞吧



初始化代码

构造器

相关文章
|
3月前
|
Java
类加载顺序
本题考察Java类加载顺序及多态特性。类加载时,先加载父类静态块,再加载子类静态块,随后按顺序加载父类非静态块、父类构造函数、子类非静态块及子类构造函数。多态情况下,`Base b = new Sub();` 表现为编译时父类特性,运行时子类特性。若子类覆盖父类方法,在父类构造函数中调用该方法时,实际调用的是子类的方法,但此时子类未完全初始化,导致子类变量未赋值,故输出 `null`。示例代码中,因子类构造器未显式调用父类构造器,导致编译错误,需添加 `super("s");` 解决。
25 0
|
7月前
|
Java
类加载的常见加载顺序
这段内容是关于Java代码执行顺序的示例。代码展示了类的静态代码块、构造器和局部构造块的执行优先级:静态代码块先于构造器和局部构造块执行,并且只在类加载时运行一次。主函数执行前,会依次看到静态代码块、局部构造块(初始化变量)和构造器的输出。列表中总结了执行顺序和特点。
|
8月前
|
Java
SpringBoot之内部配置加载顺序和外部配置加载顺序
SpringBoot之内部配置加载顺序和外部配置加载顺序
|
XML Java 数据格式
如何正确控制springboot中bean的加载顺序总结
springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题。在此基础上,又提供了spi机制,用spring.factories可以完成一个小组件的自动装配功能。 在一般业务场景,可能你不大关心一个bean是如何被注册进spring容器的。只需要把需要注册进容器的bean声明为@Component即可,spring会自动扫描到这个Bean完成初始化并加载到spring上下文容器。
|
Java
自定义类加载器实现热加载
自定义类加载器实现热加载
125 0
JVM-常见加载顺序
JVM-常见加载顺序
|
XML Java Apache
struts2源码分析之配置文件加载顺序
struts2源码分析之配置文件加载顺序
129 0
|
Java 开发工具
SpringBoot2.x基础篇:配置文件的加载顺序以及优先级覆盖
`SpringBoot`约定了配置文件,默认为`application.properties`,通过该文件可以修改很多默认的配置,当然我们还可以在该配置文件内添加自定义的配置,该文件通过`key=value`的形式进行配置。
|
Java Spring
spring配置文件+依赖注入
spring配置文件+依赖注入
112 0
spring配置文件+依赖注入