构造器是什么
完成对新对象的初始化,不是创建对象
注意
- 构造器没有返回值(不能写void)
public Person(String name,int age){
}
- 方法名必须和类名一致
- 构造器的调用由系统来完成
- 一个类可以定义多个不同的构造器,利用方法重载
- 如果程序员没有定义构造方法,系统会自动给类生成一个默认无参构造方法,可以用
javap
指令反编译看看 - 一旦定义了自己的构造器,默认的构造器就覆盖了,不能再使用默认的无参构造器,除非显式的定义一下
对象创建的流程分析
- 加载Person类信息,只会加载一次
- 在堆里面开辟一个空间
- 进行初始值
3.1 默认初始化,默认是0和null
3.2 然后进行显式的初始化int age = 90;
3.3 构造器开始对对象进行初始化
- 把地址返回给栈中的p(对象的引用),让p指向堆中的空间
堆中才是真正的对象,而p只是对象的引用、对象名