首先创建一个People实体类
package com.zhang.java_base.bean;
/**
* @program:
* @description:
* @author: 寻。
* @create: 2018-06-01 09:54
**/
public class People {
private String name ;
static{
System.out.println("静态代码块执行。。。");
}
{
System.out.println("构造代码块执行");
}
public People(){
System.out.println("无参构造器执行");
}
public static void main(String[] args) {
People people = new People();
System.out.println(people);
}
}
我们这边在main方法中测试下创建对象的过程。
静态代码块执行。。。
构造代码块执行
无参构造器执行
com.zhang.java_base.bean.People@2f92e0f4
因此得出结论:
People people = new People();
这句话都做了什么事情呢?
- 因为new用到了People.class,所以会先找到People.class文件并加载到内存中;
- 执行该类中的static代码块,如果有的话,给People.class类进行初始化;
- 在堆内存中开辟空间,分配内存地址;
- 在堆内存中建立对象的特有属性,并进行默认初始化;
- 对属性进行显示初始化;
- 对对象进行构造代码块初始化;
- 对对象进行对应的构造参数初始化;
- 将内存地址赋值给栈内存中的people变量;