1.先贴代码
- public class DemoClass
- {
-
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args)
- {
- // TODO code application logic here
- new Demo().show();
- }
-
- }
- class Demo
- {
- // 静态变量显示初始化
- private static int a = 3;
-
- // 实例成员变量
- private String string = "实例变量显式初始化";
-
- static
- {
- System.out.println(a); // 输出结果为3,说明静态变量的初始化在静态代码块之前。
- }
-
- {
- System.out.println(string);
- // 输出结果为实例变量,说明实例对象的显示初始化在非静态代码块之前。
- }
-
- public Demo()
- {
- // 构造函数中对string 进行操作。
- this.string = "构造函数";
- }
-
- public void show()
- {
- // 显示string 的最终结果
- System.out.println(string);
- }
- }
复制代码 2.程序输出
3.结论
1.从文件中加载Demo类到内存中
2.静态变量显式初始化
3.执行类的静态代码块
4.在堆中分配内存空间给非静态变量
5.对非静态变量进行默认初始化
6.对非静态变量进行显式初始化
7调用非静态代码块(构造代码块)
8调用构造函数进行特定初始化
4.求证:
求教大家:类中成员的初始化顺序是结论中那样的吗?谢谢!
|
|