Java新手,求解答

EFZGHWJY 2018-03-17 04:55:29
public class PersonTest1
{
public static Person f1(Person p)
{
p = new Person();
p.setAge(5);
return p;
}

public static void main(String[] args)
{
Person p1 = new Person();
p1.setAge(10);
f1(p1);
p1.sayHello();

}

}

为什么sayHello输出的年龄不是10,如果我想输出10怎么办?
...全文
284 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2018-04-04
  • 打赏
  • 举报
回复
你setAge和sayHello 调用都没写,只能大致判断,main里的f1(p1);调用了f1,f1中的p就是p1 ,f1中语句p。setAge(5);导致p1的Age被重新设置,并被返回了值。所以你 main里的p1。setAge(10)被新值替换了。
诺丽果 2018-03-21
  • 打赏
  • 举报
回复
引用 2 楼 weixin_40988088 的回复:
因为你把p1传到函数f1中,然后又new了一个Person,并且让p1指向新建的Person, 所以在后面的程序中p1始终指向新的Person,在函数f1中设置了新Person的age为5,所以再输出p1的age是就是5了。
2楼正解
  • 打赏
  • 举报
回复
你这个main方法里面就是p1.setAge(10);这里面写多少,最后也只能是5.
  • 打赏
  • 举报
回复
因为你把p1传到函数f1中,然后又new了一个Person,并且让p1指向新建的Person, 所以在后面的程序中p1始终指向新的Person,在函数f1中设置了新Person的age为5,所以再输出p1的age是就是5了。
这里有bug 2018-03-17
  • 打赏
  • 举报
回复
http://blog.csdn.net/hzy38324/article/details/77854412

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧