黑马程序员技术交流社区

标题: 请教:Java传递参数问题 [打印本页]

作者: 李贤    时间: 2012-4-13 18:16
标题: 请教:Java传递参数问题
Java 到底是如何传递参数的?是by value或by reference?
作者: 陈志伟    时间: 2012-4-13 18:20
All parameters (values of primitive types, and values that are references to objects) are passed by value [JLS sect 8.4.1]。根据以上 Java规格文件的说法, 所有参数应该都是传值的(by value)。但实际上, 实际经验却告诉我们所有 Java 的对象都是传址的(by reference)。因此我们可以这样解释: 基本类型(如int, float, char等)是by value,而所谓“对象”(Object)则是by value of reference to object。
作者: 马强    时间: 2012-4-13 18:47
基本类型作为参数传递的时候,传递的是值的副本,怎么改变这个副本,原值是不会变的。
同样,对象作为参数传递,传递的是引用的副本,既不是引用,更不是对象本身。
作者: 陈坚    时间: 2012-4-13 18:50
Java 是传值还是传引用,问题主要出在对象的传递上,因为 Java 中基本数据类型没有引用。既然争论中提到了引用这个东西,为了搞清楚这个问题,我们必须要知道引用是什么。
简单的说,引用其实就像是一个对象的名字或者别名 ,一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在内存中的数据,而是通过引用去访问。引用也是一种数据类型,我们可以把它想象为类似 C 语言中指针的东西,它指示了对象在内存中的地址——只不过我们不能够观察到这个地址究竟是什么。






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