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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵中国 中级黑马   /  2012-3-23 16:40  /  1786 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

到底 Java 是如何传递参数的?是by value或by reference
求正解

5 个回复

倒序浏览
这个问题比较深奥! 做个沙发玩玩吧!
回复 使用道具 举报
首先你需要明白java中是不存在传递引用一说的,都是传递的值(by value)。
其次另个概念:
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。

最后:对于基本数据类型,int long这些,传递的就是值本身,所以是值传递
对于对象引用类型,参数传递时传递的不是对象本身,也不是对象指针,而是对象在内存中位置的一个引用,这个应用本质上就是一个值,只不过底层会根据这个值找到对象。所以无论哪种数据类型,从java层面来看其本质都是值传递 。

希望能帮到你


评分

参与人数 1技术分 +2 收起 理由
房宝彬 + 2

查看全部评分

回复 使用道具 举报
对于基本数据类型,是将值复制一份传递过去,如 int a=9,a=b;类类型之间的传递是通过复制地址值,两个类类型的变量都在自己的内存空间里存一个地址值,且这两个地址值相同,即两个变量指向同一个对象,如String s1="abc",s2="abc";
回复 使用道具 举报
原来如此
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马