免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: GalaxyNext
打印 上一主题 下一主题

真搞不懂这两个程序为嘛输出结果不一样 很混乱。。 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-05-19 23:23 |只看该作者
回复 10# 方兆国

........................
   

论坛徽章:
2
季节之章:冬
日期:2015-01-20 17:08:47IT运维版块每日发帖之星
日期:2016-02-24 06:20:00
12 [报告]
发表于 2012-06-09 16:13 |只看该作者
先说第一个,虽然传过去的也是引用,但是在java中,String 类型是不能改变的,所以,修改 String 值的方法是:新建一个String ,然后指向它,所以,在第一个当中,并没有改变str1所指向的String对象的值。所以,不变。

第二个传过去的是对象的引用,所以在第二个改变String时,已经改变了P1中name的指向,虽然函数返回,但变化已经确定了。所以,这个变了。

论坛徽章:
0
13 [报告]
发表于 2012-06-10 15:18 |只看该作者
引用就是功能受限制的指针!

c/c++/java中,只存在值传递。引用传递也只是传递了引用的值(即地址),并没有传递引用本身。

论坛徽章:
0
14 [报告]
发表于 2012-06-20 15:08 |只看该作者

论坛徽章:
0
15 [报告]
发表于 2012-06-20 15:15 |只看该作者
因为String 是final的,亲

论坛徽章:
0
16 [报告]
发表于 2012-06-20 16:50 |只看该作者
这个涉及到JAVA的深拷贝和浅拷贝的问题

String: 预定义非集合类型, 作为参数时其实是深拷贝

Person: 自定义类型, 作为参数时其实是浅拷贝,拷贝的是引用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP