类和对象同时初始化时的程序执行顺序
- 1 类的默认初始化
- 2 静态块初始化
- 3 对象属性的默认初始化
- 4 匿名代码块初始化
- 5 构造方法初始化
总结
先类的初始化 再对象的初始化
类的初始化只走一次 对象的初始化每次生成对象都要走一遍相同的流程
下面举个栗子 直接看代码
public class Demo3 {
//分别定义了类变量和实例变量
static int num1 = 100;
int num2 = 100;
//静态代码块
static {
System.out.println("静态块开始 num1-->" + num1);
num1++;
System.out.println("静态块结束 num1-->" + num1);
}
// 构造方法
public Demo3() {
System.out.println("--构造方法---");
num2--;
num1++;
}
//匿名代码块
{
System.out.println("匿名块开始 num1-->" + num1);
System.out.println(" num2-->" + num2);
num2 = 1000;
System.out.println("匿名块结束 num1-->" + num1);
System.out.println(" num2-->" + num2);
}
public static void main(String[] args) {
Demo3 demo3 = new Demo3();
System.out.println("num1-->" + demo3.num1);
System.out.println("num2-->" + demo3.num2);
System.out.println();
System.out.println("--------demo4----------------");
System.out.println("--静态只走一次");
System.out.println("静态变量的本次结果作为下一次的初值出现");
//num1的初值为102
Demo3 demo4 = new Demo3();
System.out.println("num1-->" + demo3.num1);
System.out.println("num2-->" + demo3.num2);//103
}
}
就不多说了 注释和运行结果一目了然
运行结果如下
静态块开始 num1-->100
静态块结束 num1-->101
匿名块开始 num1-->101
num2-->100
匿名块结束 num1-->101
num2-->1000
--构造方法---
num1-->102
num2-->999
--------demo4----------------
--静态只走一次
静态变量的本次结果作为下一次的初值出现
匿名块开始 num1-->102
num2-->100
匿名块结束 num1-->102
num2-->1000
--构造方法---
num1-->103
num2-->999
本文探讨了Java中类和对象初始化的程序执行顺序,包括类的默认初始化、静态块、对象属性默认初始化、匿名代码块以及构造方法初始化。总结指出,类的初始化在先,且仅在类加载时执行一次,而对象初始化每次创建对象时都会执行相同流程。通过示例代码和运行结果,读者可以清晰理解这一过程。
1326

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



