这段java代码的运行结果是什么

[复制链接]
查看11 | 回复4 | 2012-12-1 16:35:24 | 显示全部楼层 |阅读模式
首先结果是:nb,为什么呢?这个在think in java书上第三章40页有一个一样例子。你的这个先是有一个p1的对象放在堆里面,如下图然后你就又建了p2这个空对象然后再把p1指向的地址给了p2,那么结果就是这样的现在你看,他们两个都是指的是同一个地址,那么他们的结果就应该是一样的了吧。假如我想让他们的结果不一样怎么弄呢?那我们就在p1给p2的时候就只给他的属性就行了:p2.name = p1.name就行了。祝你成功...
回复

使用道具 举报

千问 | 2012-12-1 16:35:24 | 显示全部楼层
nb1、p1 = new Person(),声明了一个对象,name初始为“”,p1.name="sb",将name得值赋为"sb"。2、p2 = new Person().又声明了一个对象,p2.name初始为"",p2 = p1, 其实是将p1的值即第一个对象的地址给了p2,p2.name等于"sb",这时p1、p2指向的是同一个对象。3、p...
回复

使用道具 举报

千问 | 2012-12-1 16:35:24 | 显示全部楼层
经测试输出是nbp2先指向一个new person然后又指向p1然后设置name属性等于设置p1的属性所以输出p1的属性值就是nb了这和对象的存储机制有关...
回复

使用道具 举报

千问 | 2012-12-1 16:35:24 | 显示全部楼层
nb因为p2=p1; 这时候 p1 和 p1 是一个对象p2.name="nb";所以 System.out.println(p1.name);输出 nb...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行