黑马程序员技术交流社区
标题:
Person p1 = p2;中p1,p2是一样吗?但是
[打印本页]
作者:
m狂崩的猫
时间:
2016-3-23 19:24
标题:
Person p1 = p2;中p1,p2是一样吗?但是
class Person类已定义,其中定义了eat()方法
Person p1 = new Person();
Person p2 = p1;
p2.eat();
p1 = null;
p2.eat();
如果这样p2.eat()可以有值但是
p2.eat();
p1 = null;
p1.eat();就没址了
但是p1,p2不是应该是一样的吗
作者:
as9600
时间:
2016-3-23 20:48
P2是接受的地址,并不是指向的p1
作者:
ShallDoll
时间:
2016-3-23 21:46
p2=p1是p2和p1指向了同一地址值,p1=null后,p1没了地址值,但是p2的地址值还是没有改变的
作者:
xiaofushen
时间:
2016-3-23 21:55
本帖最后由 xiaofushen 于 2016-3-23 21:56 编辑
楼上正解,栈中p1=null后,就不指向堆内存中的new Person()了,但是之前Person p2 = p1;p1把new Person()的地址给了p2,p2依然指向new Person(),所以p2.eat()可以调用其eat ()方法,但是p1=null已经清空地址,不再指向new Person(), 那么p1就调用不了其eat()方法了.
作者:
萌萌的_O30IH
时间:
2016-3-23 22:35
我再想想
作者:
星空下的初吻
时间:
2016-3-23 22:45
p2 接受了p1的地址, 这是两个对象同指一个地址,p1为null了 后 ,p2也跟着没地址了
作者:
LLQALLQ
时间:
2016-3-23 23:33
p1和p2的地址是是一样的,但是他们共同拥有一个对象,既然p2用了,p1就为null了
作者:
604840337
时间:
2016-3-23 23:51
p2 =p1 相当于 地址值转换 p1为垃圾了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2