构造代码块的优先级比构造函数高。
先是默认初始化,然后是显示初始化,紧跟是构造代码块初始化,接下来是构造函数初始化。
person p=new person("zhangsan",20);
该句话都做了什么事?
1,因为new用到了person.class.所以会先找到person.class文件并加载到内容中。
2,执行该类中的static代码块,如果有的话,给person.class类进行初始化。
3,在堆内存中开辟空间,分配内存地址。
4,在堆内存中建立对象的特有属性。并进行默认初始化。
5,对特有属性进行显示初始化。
6,对对象进行构造代码块初始化。7,对对象进行对应的构造函数初始化。
8,将内存地址付给栈内存中的P不变量。 |