A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘旭升 高级黑马   /  2013-12-26 15:39  /  1044 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有时就会不明白参数传值:有的传的是引用所以改变后原参变,有的传的不是引用。有时会搞不清楚。希望谁能解释清楚一些的{:soso_e179:}。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 关注。

查看全部评分

3 个回复

倒序浏览
FFF 金牌黑马 2013-12-26 16:42:07
沙发
Java到底是传值还是传引用?相信很少有人能完全回答正确。通常的说法是:对于基本数据类型(整型、浮点型、字符型、布尔型等),传值;对于引用类型(对象、数组),传引用。基本类型传值,所有人都不会对此有疑义;问题出在引用类型上,目前比较多的人认为是值引用。这个问题Java之父也说不清楚。
回复 使用道具 举报
本帖最后由 rainforestking 于 2013-12-27 11:33 编辑
这个问题Java之父也说不清楚

我靠,这个好流弊!
java中不存在指针其实并不是这样的,没指针程序还怎么运行啊!只不过指针对用户屏蔽了(你不能显式地使用指针,因为一般人操作不好指针,java中什么复杂的东西都被封转起来),其实经常用到的引用底层不是指针是啥?只不过java对指针的处理就是默认所有指向对象的变量都是指针(引用),于是就根本不需要用取地址去内容运算符神马的麻烦操作(这一点和C系语言不一样),可以把引用想象成一个隐式指针,在传参数的过程中,程序运行时自动把传入的引用翻译为地址,从这个地址中找到操作对象,其实仔细想想看,尼玛这java是用c系写的,不用指针实现你用什么实现,底层操作时程序都是要有地址的,不然运行不起来(详见《计算机体系结构——a programmer's perspective》)。只不过java夸下了没有指针的海口,于是这种问题java之父避不开,就说不清楚,尼玛java就是他设计的,底层实现他一清二楚,他不知道谁知道啊!只不过这并不影响java的使用。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定,别鸡动。

查看全部评分

回复 使用道具 举报
rainforestking 发表于 2013-12-27 11:31
我靠,这个好流弊!
java中不存在指针其实并不是这样的,没指针程序还怎么运行啊!只不过指针对用户屏蔽了 ...

有关java的细节地方还得或者复杂的内部结构实现等还要参见c++/c。先学习java,有时间再加深理解。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马