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

   }

}

静态代码块

局部代码块


初始化代码

构造器


初始化代码

构造器

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

若有收获,就点个赞吧



初始化代码

构造器

相关文章
|
1月前
|
Java
类加载顺序
本题考察Java类加载顺序及多态特性。类加载时,先加载父类静态块,再加载子类静态块,随后按顺序加载父类非静态块、父类构造函数、子类非静态块及子类构造函数。多态情况下,`Base b = new Sub();` 表现为编译时父类特性,运行时子类特性。若子类覆盖父类方法,在父类构造函数中调用该方法时,实际调用的是子类的方法,但此时子类未完全初始化,导致子类变量未赋值,故输出 `null`。示例代码中,因子类构造器未显式调用父类构造器,导致编译错误,需添加 `super("s");` 解决。
18 0
|
5月前
|
Java
类加载的常见加载顺序
这段内容是关于Java代码执行顺序的示例。代码展示了类的静态代码块、构造器和局部构造块的执行优先级:静态代码块先于构造器和局部构造块执行,并且只在类加载时运行一次。主函数执行前,会依次看到静态代码块、局部构造块(初始化变量)和构造器的输出。列表中总结了执行顺序和特点。
|
6月前
|
Java
SpringBoot之内部配置加载顺序和外部配置加载顺序
SpringBoot之内部配置加载顺序和外部配置加载顺序
|
Java
自定义类加载器实现热加载
自定义类加载器实现热加载
104 0
JVM-常见加载顺序
JVM-常见加载顺序
|
XML Java Apache
struts2源码分析之配置文件加载顺序
struts2源码分析之配置文件加载顺序
127 0
|
Java Spring
spring配置文件+依赖注入
spring配置文件+依赖注入
107 0
spring配置文件+依赖注入
|
Java Spring
Spring配置
id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符 如果配置id,又配置了name,那么name是别名 name可以设置多个别名,可以用逗号,分号,空格隔开 如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象;
|
Java 测试技术 Spring
Spring配置文件详解
Spring配置文件详解
334 0
Spring配置文件详解