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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lvfubin 中级黑马   /  2015-8-19 22:43  /  325 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

   Java中有引用传递吗?哪位大神能给解释一下?

评分

参与人数 1黑马币 +3 收起 理由
18333611664 + 3

查看全部评分

5 个回复

倒序浏览
我感觉是有的呢.例如这个意思.
int[] arr1 = {1,2,3,4,5};
int[] arr2 = arr1;
这个在内存里面的形式就是 栈里面的主函数里面有 arr1 arr2 两个变量.
然后堆内存里面有一片空间,是存放的arr1,以及里面的元素.然后arr1这个数组的地址值
开始是存放在arr1这个变量上面的.然后arr2 = arr1 这个的意思就是arr1吧自己的地址值
传递给了arr2,所以arr2也就指向了同一个数组,这样的话不管哪一个操作那一个数组
另一个对象调用那个数组的时候就是已经被改变过了的数组了.这就是引用类型的变量传递
的不是具体的值,而是引用,传递的是地址值.
回复 使用道具 举报
mmppp 发表于 2015-8-20 17:39
我感觉是有的呢.例如这个意思.
int[] arr1 = {1,2,3,4,5};
int[] arr2 = arr1;

这位兄弟,你的例子举得很好,但是你理解的有些偏差。首先可以肯定的说,java中没有引用传递,只有值传递。地址值也是具体的值,因此也认为是值传递,因为对于引用类型变量你不能说它没有存储具体的值,它要么为空,要么存储了地址值,而这个地址值就是它的内容,是一个值,因此是java只有值传递,没有引用 传递
回复 使用道具 举报
殷俊 发表于 2015-8-20 19:27
这位兄弟,你的例子举得很好,但是你理解的有些偏差。首先可以肯定的说,java中没有引用传递,只有值传递 ...

哦哦哦 谢谢哦 真好 又知道一个错误了哈 你是在黑马双元课堂上课吗
回复 使用道具 举报
mmppp 发表于 2015-8-20 19:48
哦哦哦 谢谢哦 真好 又知道一个错误了哈 你是在黑马双元课堂上课吗

恩恩,你呢?
回复 使用道具 举报
二楼说的很对.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马