对下面程序进行分析
对于public class Demo27 { public static void main(String[] args){ Person6 p=new Person6("zhangsan", 23); } } class Person6{ private String name="WGS"; private int age; private static String countryString="cn"; Person6(String name,int age){ this.name=name; this.age=age; } public void setName(String name){ this.name=name; } public void speak(){ System.out.println(this.name+" "+this.age); } }
Person6 p=new Person6("zhangsan",20);
该句话是如何执行的?
1、因为new 用到了Person.class,所以会先找到Person.class文件并加装到内存中。
2、执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3、在堆内存中开辟空间,分配内存地址。
4、在堆内存中建立对象的特有属性,并进行默认初始化。
5、对属性进行显示初始化。(也即是上面代码中的Private String name="WGS";)
6、对对象进行构造代码块初始化。
7、对对象进行相应的构造函数初始化。
8、将内存地址赋给栈内存中的p变量。