You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java初始化块执行流程解析:这段代码的运行顺序是怎样的?

Java类实例初始化执行流程解析

针对你给出的代码,实际运行时的执行顺序和你猜想的不一样,具体过程如下:

当创建TestClass的实例时:

  • JVM先为实例分配内存,此时实例变量i会被默认初始化为0(int类型的默认值)。
  • 按照代码在类中出现的先后顺序执行初始化逻辑:
    1. 先执行实例初始化块:{ i = 3; },这一步把i的值从0改成3。
    2. 接着执行实例变量的初始化语句(LINE 7):int i = 2;,这一步直接给i赋值为2,覆盖了之前的3。
  • 最终实例的i值是2。

简单来说:实例初始化块和实例变量初始化语句是按代码书写顺序依次执行的,不存在“跳过初始化块再回头执行”的情况。

举个反例,如果把变量初始化放在初始化块前面:

public class TestClass {
    int i = 2;
    {
        i = 3;
    }
}

此时i最终的值会是3,因为先执行变量赋值为2,再执行初始化块把它改成3。

内容的提问来源于stack exchange,提问作者Oyst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:32:33