OOP(面向对象)对象内存解析

对象的内存解析

Person p1 = new Pserson();
p1.name = "Tom";
p1.isMale = true;
Person p2 = new Person();
Person p3 = p1;
p3.age = 10;
以下图片均参考尚硅谷宋红康版讲解的java

第一行代码解析:

new Person(),只要是new的结构都在堆中,则在堆中开辟一个空间地址为0x12ab,而后在栈空间中声明一个变量p1,因为p1在main方法中,方法中的变量都是局部变量,栈中存放的是p1的局部变量存储地址值0x12ab,而后堆中属性name和isMale没有值:默认初始化为null和false(此也为一个知识点,以后会总结)age赋值为1.第一行代码结束。

第二三行代码解析:
在这里插入图片描述
将Tom赋值给name,则null被占用,Tom中的值并不在堆中,而在方法去和常量池中,这里不做细讲。

最后几行解析
在这里插入图片描述
Person p3 = p1
这里仅仅是将栈中的p1的地址值赋值给p3,而堆中不创建对象。即:p3中的地址指向0x12ab

对象数组(同理)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值