首先创建一个类,通过这个类说明,对象的初始化过程:
class Person{
private String name;//默认初始化值为null;
private int age;//默认初始化值为0;
private String test = "hello";//hello是显示初始化的值;
public static String country = "cn";//静态成员变量。
{//构造代码块
System.out.println(name+"......."+age+"....."+test);
}
Person(String name,int age){//构造函数
this.name = name;
this.age = age;
}
public void setName(String name){
this.name= name;
}
public void show(String name,int age){
System.out.println("name:"+name+"......age:"+age);
}
public static void showCountry(){
System.out.println("country:"+country);
}
}
public class Demo12 {
public static void main(String[] args) {
Person p = new Person("zhangsan",29);
}
}
通过执行Person p = new Person("zhangsan",29) 这一句代码,讲述对象初始化的过程
1,new 用到了Person.class文件,会先找到Person.class文件,然后将Person.class这个文件加载到内存中;
2,执行Person类中的静态代码块,对Person类进行初始化(在方法区创建一个Person类的空间,并将country和showCountry的数据存入方法区);
3,在堆内存中开辟空间,给对象分配内存地址。
4,在堆内存中建立对象的特有属性(name,age),并进行默认初始化(name=null,age=0,test=null);
5,对属性进行显示初始化(显示初始化后test=hello);
6,对对象进行构造代码块初始化(会打印name=null,age=0,test=hello);
7,对对象进行对应的构造函数初始化(name=“张三”,age=29);
8,将内存地址赋给栈内存的中的p变量。 |