构造函数内存图中,Person p = new Person("张三","30")创建后,自动调用构造函数,但是new Person放在了栈内存中,new出来的东西不是应该都在堆内存里吗?
需要说明的是new Person,是创建一个对象,对象创建后,是存放在堆内存中,而p是一个变量,是存放在栈内存中的,将new Person("张三",30)赋给p,其实就是将Person对象在堆内存中的引用地址赋给了p,对于Person对象的实例化过程如下:
1.加载Person类
2.在栈内存中开辟空间存储p变量;
3.在堆内存中开辟空间并分配地址同时存储new出来的Person对象,假如这个地址是0x2323a3
4.将地址值0x2323a3赋给p变量 |