黑马程序员技术交流社区

标题: 值传递和引用传递 [打印本页]

作者: 一枝独秀/51    时间: 2012-6-25 21:40
标题: 值传递和引用传递
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
作者: 邵阳    时间: 2012-6-25 21:56
本帖最后由 邵阳 于 2012-6-25 22:10 编辑

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

百度上都有答案啊,楼主问问题前,先查查百度嘛
作者: whocases    时间: 2012-6-25 22:04
当然是值传递。因为Java只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的,希望这么解答楼主能满意~~
作者: 王月    时间: 2012-6-26 00:02
可以看作引用传递。就像你说的那样,已经证明了传递的是引用数据类型时,形参的改变直接影响实参。
其实引用传递也是值传递的一种,因为它传递是地址值,也是值,所以java中就统一说只有值传递

作者: Forever。    时间: 2012-6-26 00:30
从理解上你按照按引用传递比较容易接受点,毕竟最终源对象的值发生了改变。你可以做一个这样的测试:
private void zhi(List a)
        {
                a.add("555");
                System.out.println(a.get(0));//这里会打印出一行555来
                System.out.println(list.get(0));//此处是你在调用方法时传入的参数list,他在这个地方是不会改变的,假设他的size为0,那么此处应该会报错。
        }

而你在main方法内再次打印list的第0个值时会发现打印出555(将方法内的第二个输出语句删除后)


最终结论他是按值传递
作者: 游洪波    时间: 2012-6-26 00:38
是值传递,在Java中有值传递和引用传递,但是方法调用是用的却是值传递,值传递指的是方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。
在java中由于传递的是值,那么传递过去以后就与现在的值互不相干了。而引用传递是指把对象的地址传递到方法或函数中,这种传递由于传递的是内存地址,所以方法中如果改变对象的属性值的话,那么外边的对象也会随之改变




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