看一个案例如下:
class Person{
String name;
int age = 90;
Person(String pName,int pAge){
name = pName;//给属性赋值
age = pAge;//给属性赋值
}
}
Person p1 = new Person("赵子龙",18);
流程分析:
- 加载Person类信息(Person.class),只会加载一次
- 在堆中分配空间(地址)【橙色框中内容】
- 完成对象初始化(分3步)
- 将对象在堆中的地址返回给p1(p1是对象名,也可以理解为是对象的引用)
对象初始化(分3步):
- 3.1 默认初始化 age = 0 name = null
- 3.2 显示初始化 age = 90 name = null【蓝色框及线部分】
- 3.3 构造器的初始化 age = 18 name = "赵子龙"【紫色框及线部分】
如图: