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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

4 个回复

倒序浏览
两种参数传递情况:
1.一种是基本数据类型的传递
2.一种是引用数据类型的传递
1的情况是你传递进去的是数值,并不是变量本身,被方法中的形参接收了,因此无论形参怎么变,对你传递的变量不会有任何影响.
2的情况是,你把引用型变量X的地址传递到了方法中的形参Y,而Y与X都是指向同一个地址.因此,无论你对X操作还是Y操作,实际上操作的是同一个对象.因此会造成地址对应对象的实际改变.
回复 使用道具 举报
比如方法static Object1 test(Object obj);如果你使用Object1.test(obj1);,其中obj1是其它类型的对象,这里执行Object obj = obj1; 即把obj1的地址赋值给obj。因为obj1的值是Object对象的地址,所以将其内容即Object对象的地址赋值给obj。本质上是值传递。实际在Java中都是值传递,弄清楚传递的是什么值,就明白了。
回复 使用道具 举报
学习了。。
回复 使用道具 举报
1、java中没有真正意义上的引用传递
2、基本类型参数的传递的是变量值,引用类型传递的是变量内存地址
3、对引用数据类型变量的操作实际就是根据内存地址值对对象的操作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马