还是 ac ,注意 执行顺序 和你代码放的位置并不一定有关系。
静态代码块:特点:随着类的加载而执行。只执行一次。用于给类初始化的。并优先于主函数执行。
构造代码块:给所有对象进行初始化。 对象一建立就运行,优先于构造函数运行。
关于程序执行初始化顺序:
Person p= new Person(“zhangsan”,10);
该句话都做了什么、?
1,因为new用到了Person.class 所以会先找到Person.class文件并加载到内存中。
2,执行该类中的静态代码块(如果有的话),给类进行初始化。
3,在堆内存中开辟空间,分配内存地址。
4,在堆内存中建立对象的特有属性,并进行默认初始化。
5,对对象属性进行显示初始化。
6,执行构造代码块。代码块是对所有对象进行初始化的。
7,对对象对应的构造函数初始化。
8,将内存地址赋给载内存中的变量。
这是我的视频总结 你看懂这个 以后你就知道 程序的执行顺序 |