类与对象的学习(三)------对象分配机制

对象分配机制:

//下面有一段代码

Person p1 = new Person();
p1.age = 10;
p1.name = "小明";
Person p2 = p1 ; //把p1赋给了 p2 , 让 p2 指向 p1
System.out.println(p2.age);

请问:p2.age 究竟是多少? 并画出内存图:

内存分析图:

对代码进行逐步分析:

  1. Person p1 = new Person(); // Person p1 是对Person变量 p1 的声明  ; new Person( )则赋予p1数据空间 , 这里假设数据空间的地址为0x0011, 则p1指向地址为0x0011的空间,如图中所示
  2. p1.age = 10;   p1.name = "小明"; //将age = 10 , name = "小明" 存储在地址为0x0011的数据空间中, 而name变量接收的是 存储在方法区常量池中的字符串变量----"小明"的引用地址0x0022
  3. Person p2 = p1 ; //该语句表示将p1赋给了p2 , 也就是将p1指向的引用地址同样赋予p2 ,  也就是让p2也指向地址为0x0011的数据空间
  4. 此时输出p2.age , 则输出的p2.age 与 p1.age 是一样的 都是地址0x0011空间下的age变量 , age=10;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值