黑马程序员技术交流社区

标题: 参数传值详解 [打印本页]

作者: 刘旭升    时间: 2013-12-26 15:39
标题: 参数传值详解
有时就会不明白参数传值:有的传的是引用所以改变后原参变,有的传的不是引用。有时会搞不清楚。希望谁能解释清楚一些的{:soso_e179:}。
作者: FFF    时间: 2013-12-26 16:42
Java到底是传值还是传引用?相信很少有人能完全回答正确。通常的说法是:对于基本数据类型(整型、浮点型、字符型、布尔型等),传值;对于引用类型(对象、数组),传引用。基本类型传值,所有人都不会对此有疑义;问题出在引用类型上,目前比较多的人认为是值引用。这个问题Java之父也说不清楚。
作者: rainforestking    时间: 2013-12-27 11:31
本帖最后由 rainforestking 于 2013-12-27 11:33 编辑
这个问题Java之父也说不清楚

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

有关java的细节地方还得或者复杂的内部结构实现等还要参见c++/c。先学习java,有时间再加深理解。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2