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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周怡 中级黑马   /  2013-2-6 23:00  /  2772 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

6 个回复

倒序浏览
值传递。
引用类型数据传递实际传递的是该引用类型数据的地址值。
回复 使用道具 举报
本帖最后由 黄成超 于 2013-2-7 21:41 编辑

地址传递!
值传递,只是把值传过去,是不能改变对象属性的。你说这个方法可以改变值的属性,所以通过这个对象操作的就是这个对象本身,而获取这个对象的方式,就是地址,所以,很显然,传递的是地址啦!至于说返回变化后的结果,无论值传递,还是地址传递,都是可以的!

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
是值传递。
Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
回复 使用道具 举报

对于Java的参数传递问题,共分两种情况:

1、对于基本数据类型传递的是值
2、对于对象传递的就是引用(也就是地址了)

如果是传值的话,就相当于你有一份数据,你拷贝了一份并发送给了别人,此时别人对此数据所做的
任何更改,都不会引起你原有数据的变化,因为此时根本就是两份不同的数据怎么会相互影响呢?

但如果传递的是引用的话,就相当于你有一份数据并存在了一个地方,此时你把你数据所在的地址告诉了
别人,这时如果别人拿着地址找到了你的数据,并做出了相应的修改,,如果你再按照你的地址再次的
访问该数据,当然就是修改后的了!所以值就变了呗!

对于你的问题,传递的是对象,所以当然是引用传递了!

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。
如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
刘卡 初级黑马 2013-2-20 00:22:10
7#
对象是按引用传递的。基本数据类型和引用类型是按值传递的。从另一方面来说,Java 应用程序有且仅有的一种参数传递机制,即按值传递。传对象其实也是传值,因为对象就是一个指针,一个地址,一个整数值,这个赋值是指针之间的赋值,因此在java中就将它说成了传引用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马