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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 16463535 中级黑马   /  2013-4-13 13:09  /  1232 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 16463535 于 2013-4-14 08:57 编辑

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

评分

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

查看全部评分

2 个回复

正序浏览
是引用传递,其实很容易说明白 ,对于值传递。内存中会复制一个被传递的值的副本,你的方法作用只是这个副本,当然不能改变它真正的值了,引用传递传递的是对象的地址,方法作用这个地址上的对象,当然操作的是这个对象的“真身”,方法假如有修改这个对象属性的功能,执行后,它当然就会被改变了。一般对象相对基本数据类型来说体积还是大的多,用值传递肯定效率不高,也占内存。

评分

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

查看全部评分

回复 使用道具 举报
这个你要看是什么了。。
如果是基本类型....
只是值传递....
如果使用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 创建的对象是存在堆内存区....
而基本类型创建的是存在于栈内存中..
这个肯能是本质区别吧

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马