黑马程序员技术交流社区

标题: 当对象作为参数传递 [打印本页]

作者: 16463535    时间: 2013-4-13 13:09
标题: 当对象作为参数传递
本帖最后由 16463535 于 2013-4-14 08:57 编辑

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

作者: 刘胜寒    时间: 2013-4-13 13:32
这个你要看是什么了。。
如果是基本类型....
只是值传递....
如果使用new新建的对象是引用传递...
会改变属性的...
int a = 0,b = 1;

int[] arr = new int[10];

加入有两个静态的函数
swap(int a,int b); 交换a和b的值 当这个函数执行完毕,你在main方法中打印ab的值是没有变化的
chang(int[] arr); 而这个你如果修改arr中任何一个元素,而这个改变将保存到arr中,你在main中打印arr就会发现有所改变了;
我是这么理解的用new 创建的对象是存在堆内存区....
而基本类型创建的是存在于栈内存中..
这个肯能是本质区别吧
作者: 张先龙    时间: 2013-4-13 13:49
是引用传递,其实很容易说明白 ,对于值传递。内存中会复制一个被传递的值的副本,你的方法作用只是这个副本,当然不能改变它真正的值了,引用传递传递的是对象的地址,方法作用这个地址上的对象,当然操作的是这个对象的“真身”,方法假如有修改这个对象属性的功能,执行后,它当然就会被改变了。一般对象相对基本数据类型来说体积还是大的多,用值传递肯定效率不高,也占内存。




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