对象的初始化过程

class Person{
    private String name;
    private int age;
    private static String contry = "cn";
    Person(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);
    }
    public static void showCountry(){
        System.out.println("country="+country);
    }
}
class PersonDemo{
    public static void main(String[] args) {
        Person p = newPerson("zhangsan",20);
    }
}

这里写图片描述

  1. 因为new用到了Preson.class.所以会先找到Person.class文件并加载到内存中。
  2. 执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
  3. 在堆的内存中开辟空间,分配内存地址。
  4. 在堆内存中建立对象的特有属性,并进行默认初始化。
  5. 对属性进行显示初始化。
  6. 对对象进行构造代码块初始化。
  7. 对对象进行对应的构造函数初始化。
  8. 将内存地址赋给栈内存中的p变量。

猜你喜欢

转载自blog.csdn.net/weixin_40995778/article/details/81328511