方法是jvm为需初始化的类自动生成的特殊静态方法,封装静态变量赋值和静态代码块,按源码顺序执行,无参无返回值,首次主动使用时线程安全地执行一次。

Java 类的初始化阶段通过执行 `
什么是 `` 方法
`
什么情况下会触发 `` 执行
以下任一情况发生时,JVM 会触发类的初始化(即执行 `
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 创建该类的实例(如 new MyClass())
- 调用该类的静态方法
- 访问该类的静态字段(被 final 修饰且已在编译期确定值的除外)
- 反射调用(如 Class.forName("MyClass"))
- 子类初始化时,若父类尚未初始化,则先触发父类 `
`
`` 中的赋值顺序很重要
静态变量赋值和静态代码块的执行顺序严格遵循它们在 Java 源文件中从上到下的声明顺序。例如:
class Example {
static int a = 1;
static {
a = 2; // 此时 a 已被赋初值 1,现在改为 2
}
static int b = a + 1; // b = 2 + 1 = 3
static {
System.out.println("a=" + a + ", b=" + b); // 输出:a=2, b=3
}
}
注意:静态字段的默认初始值(如 int 默认为 0)在准备阶段已设置;`
哪些情况不会生成 ``
如果一个类没有静态变量赋值语句,也没有静态代码块,编译器通常不会为其生成 `
- 空的类(只有 public class A {})
- 仅含静态常量(public static final int X = 42;)且值在编译期确定的类(这类字段会被内联,不触发初始化)
- 接口(接口有 `
`,但仅当它定义了 static 字段且需要初始化时才生成)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










