对象指向java_对象指向 - lingling - BlogJava

先定义一个Person类

public class Person {

String name;

int age;

void say(){

System.out.println("姓名:"+name+" 年龄"+age);

}

}

public class Demo01 {

public static void main(String[] args) {

Person p1=new Person();

Person p2=null;

p2=p1;

p1.name="张三";

p1.age=50;

p2.name="李四";

p2.age=80;

p1.say();

p2.say();

}

}

输出结果为:d66a4ed995dc249353b94b90cb0e346f.png

原因为:执行p2=p1,p1的值赋给p2,p2先断开其刚才在堆内存中开辟空间的连接,再p2与p1所开辟的空间连接 ,p1、p2指向堆内存中的同一个空间,然后p2设置新值,覆盖原值。画图表示为:

996165518c51d10247220ed161fa47f3.png

public class Demo01 {

public static void main(String[] args) {

Person p1=new Person();

Person p2=null;

p2=p1;

p1.name="张三";

p1.age=50;

p1.say();

p2.name="李四";

p2.age=80;

p2.say();

}

}

输出结果为:

bf3eaef4dd819e03f7232e0714c213e4.png

程序中先执行p2=p1,p1的值赋给p2,p2先断开其刚才在堆内存中开辟空间的连接,再p2与p1所开辟的空间连接,p1、p2指向堆内存中的同一个空间。

执行p1.say(),输出张三的信息。

e4d23a2296eb09be8698d68f4cdd3f3d.png

P2设置新值,覆盖原值,再执行p2.say()输出李四的信息

0cc3554ddc1309fecdd03521a1939232.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值