1. 静态变量赋值流程
+----------------------------------+---------------------------+---------------------------+---------------------------+-----------------------------+
| 赋值情况 | 类加载阶段 | 类初始化阶段 | 静态变量赋值 | `final`修饰 |
+----------------------------------+---------------------------+---------------------------+---------------------------+-----------------------------+
| 1. 声明时赋值,未`final` | staticVar = 10 | 不需要再赋值 | staticVar = 10 | 否 |
+----------------------------------+---------------------------+---------------------------+---------------------------+-----------------------------+
| 2. 声明时赋值,已`final` | staticFinalVar = 10 | 不需要再赋值 | staticFinalVar = 10 | 是 |
+----------------------------------+---------------------------+---------------------------+---------------------------+-----------------------------+
| 3. 声明时未赋值,未`final` | staticVar = 0 (默认值) | staticVar = 10 | staticVar = 10 | 否 |
+----------------------------------+---------------------------+---------------------------+---------------------------+-----------------------------+
| 4. 声明时未赋值,已`final` | staticFinalVar = 0 (默认值) | staticFinalVar = 10 | staticFinalVar = 10 | 是 |
+----------------------------------+---------------------------+---------------------------+---------------------------+-----------------------------+
2.实例变量赋值流程
+------------------+----------------------------+-----------------------------+
| 阶段 | 创建对象时发生的过程 | 对应的实例变量赋值 |
+------------------+----------------------------+-----------------------------+
| **类加载阶段** | 类加载时,静态变量初始化 | 静态变量赋值,实例变量不赋值 |
| **实例初始化** | 对象创建时分配内存并赋默认值 | 实例变量赋默认值(例如 0,null) |
| **构造器阶段** | 构造器调用 | 构造器中显式赋值,覆盖默认值 |
+------------------+----------------------------+-----------------------------+
2931

被折叠的 条评论
为什么被折叠?



