java中参数的传递方式 分两种,一种是值传递,一种是引用传递。值传递,传递的是一个拷贝,就好像给你一带大米。引用传递,传递一个地址,就好像给你一张纸,纸上写着大米在厨房,你自己拿。我虽然能理解,但是我还是初学,想请教大家写两个具体的方法来比较一下,欢迎大家讨论 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没什么可讨论的,在JAVA里你不可能改变参数传递方式原始类型都是值传递,对象类型永远是引用传递 知道参数传递在对象和int上的效果就可以了,多讨论也没什么意义。 java 没什么说的 多数是引用。值传递,是传输具体的数,或字符没什么价值。 java中采用的都是值传递就是说,即便参数是对象的引用,方法得到的也是引用的copy参考 <java2核心技术 卷1> 4.5章节 java中采用的都是值传递就是说,即便参数是对象的引用,方法得到的也是引用的copy参考 <java2核心技术 卷1> 4.5章节=============================== 这位兄弟说的对,在JAVA中只有值传递,不像C,C++中有值和引用(地址)传递.比如在一个方法中,传了一个对象过去,即以对象作为参数,然后在方法中修改对象的某个值,然后返回这个值,会发现该对象的该属性值并没有改变,还是原来的值,所以说明这是值传递,不像C++中,在C++中这时属性值就会改变,这也是JAVA与C++不一样的地方. java中采用的都是值传递就是说,即便参数是对象的引用,方法得到的也是引用的copy这说的太对了!我支持 楼上误解了...简单的说引用(reference)是一种java数据类型, 用于存放对象(object or instance)的地址.比如一个方法:void f(Type t) { }和方法调用o.f(tt)无论t的类型是基础数据类型(primitive)还是引用数据类型t只是tt的一个拷贝. 对于引用数据类型,t拷贝的就是tt所存放的对象的地址也就是说,t和tt指向了同一个对象.无论在方法f中怎么操作都不会改变tt中存放的值, 但是可以改变tt所指向的对象的内容. 错了,是楼上的楼上的楼上方法传递的是引用(reference) 都可以理解是值传递,就是copy你需要理解的是对象类型为引用类型,仅此而已。 呵呵 这个问题老生常谈了JAVA是不支持引用传递的所谓的引用传递也是 引用的副本你只要注意这点就行 java中只有一种传递方式,就是传址。其实任何语言参数传递也都是传址方式的。传值是这样的:将原来的数据在内存中形成一个拷贝,然后在传递给你这个拷贝的地址。所以函数传递参数只有一种方式,那就是传址。据说:传值方式只是国内的高校老师为了讲课方便介绍的概念。在国外已经抛弃了这个概念。统一的就是传址。 关于多进程并发问题 大四学生的问题 关于jdk swing jframe上书写一段文字用Graphics 新手学习,2种reapaint()不能见效的情况 java中怎样得到SQL Server 2000 存储过程的结果集 一个简单的小程序问题 layout的问题 使用jdbc-odbc桥时提示login failed for user ('null') 愿交JAVA朋友,高手更好!!! 如何用JAVA在本地播放音乐?? 13
就是说,即便参数是对象的引用,方法得到的也是引用的copy
参考 <java2核心技术 卷1> 4.5章节
就是说,即便参数是对象的引用,方法得到的也是引用的copy
参考 <java2核心技术 卷1> 4.5章节
===============================
这位兄弟说的对,在JAVA中只有值传递,不像C,C++中有值和引用(地址)传递.
比如在一个方法中,传了一个对象过去,即以对象作为参数,然后在方法中修改
对象的某个值,然后返回这个值,会发现该对象的该属性值并没有改变,还是原来
的值,所以说明这是值传递,不像C++中,在C++中这时属性值就会改变,这也是JAVA
与C++不一样的地方.
就是说,即便参数是对象的引用,方法得到的也是引用的copy
这说的太对了!我支持
简单的说引用(reference)是一种java数据类型, 用于存放对象(object or instance)的地址.
比如一个方法:
void f(Type t) { }
和方法调用
o.f(tt)
无论t的类型是基础数据类型(primitive)还是引用数据类型
t只是tt的一个拷贝. 对于引用数据类型,t拷贝的就是tt所存放的对象的地址
也就是说,t和tt指向了同一个对象.
无论在方法f中怎么操作都不会改变tt中存放的值, 但是可以改变tt所指向的对象的内容.
方法传递的是引用(reference)
JAVA是不支持引用传递的
所谓的引用传递也是 引用的副本
你只要注意这点就行
传值是这样的:将原来的数据在内存中形成一个拷贝,然后在传递给你这个拷贝的地址。所以函数传递参数只有一种方式,那就是传址。
据说:传值方式只是国内的高校老师为了讲课方便介绍的概念。在国外已经抛弃了这个概念。统一的就是传址。