黑马程序员技术交流社区

标题: 参数问题 [打印本页]

作者: 周怡    时间: 2013-2-6 23:00
标题: 参数问题
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?


作者: 夏振博    时间: 2013-2-7 01:34
值传递。
引用类型数据传递实际传递的是该引用类型数据的地址值。
作者: 黄成超    时间: 2013-2-7 21:40
本帖最后由 黄成超 于 2013-2-7 21:41 编辑

地址传递!
值传递,只是把值传过去,是不能改变对象属性的。你说这个方法可以改变值的属性,所以通过这个对象操作的就是这个对象本身,而获取这个对象的方式,就是地址,所以,很显然,传递的是地址啦!至于说返回变化后的结果,无论值传递,还是地址传递,都是可以的!
作者: 成吉思汗    时间: 2013-2-10 10:33
是值传递。
Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

作者: 李大强    时间: 2013-2-10 17:39

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

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

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

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

对于你的问题,传递的是对象,所以当然是引用传递了!
作者: 念满    时间: 2013-2-18 23:51
Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。
如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。

作者: 刘卡    时间: 2013-2-20 00:22
对象是按引用传递的。基本数据类型和引用类型是按值传递的。从另一方面来说,Java 应用程序有且仅有的一种参数传递机制,即按值传递。传对象其实也是传值,因为对象就是一个指针,一个地址,一个整数值,这个赋值是指针之间的赋值,因此在java中就将它说成了传引用。




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