黑马程序员技术交流社区

标题: java中引用传递吗? [打印本页]

作者: lvfubin    时间: 2015-8-19 22:43
标题: java中引用传递吗?
   Java中有引用传递吗?哪位大神能给解释一下?
作者: mmppp    时间: 2015-8-20 17:39
我感觉是有的呢.例如这个意思.
int[] arr1 = {1,2,3,4,5};
int[] arr2 = arr1;
这个在内存里面的形式就是 栈里面的主函数里面有 arr1 arr2 两个变量.
然后堆内存里面有一片空间,是存放的arr1,以及里面的元素.然后arr1这个数组的地址值
开始是存放在arr1这个变量上面的.然后arr2 = arr1 这个的意思就是arr1吧自己的地址值
传递给了arr2,所以arr2也就指向了同一个数组,这样的话不管哪一个操作那一个数组
另一个对象调用那个数组的时候就是已经被改变过了的数组了.这就是引用类型的变量传递
的不是具体的值,而是引用,传递的是地址值.
作者: 殷俊    时间: 2015-8-20 19:27
mmppp 发表于 2015-8-20 17:39
我感觉是有的呢.例如这个意思.
int[] arr1 = {1,2,3,4,5};
int[] arr2 = arr1;

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

哦哦哦 谢谢哦 真好 又知道一个错误了哈 你是在黑马双元课堂上课吗
作者: 殷俊    时间: 2015-8-20 19:50
mmppp 发表于 2015-8-20 19:48
哦哦哦 谢谢哦 真好 又知道一个错误了哈 你是在黑马双元课堂上课吗

恩恩,你呢?
作者: burningzzy    时间: 2015-8-20 20:35
二楼说的很对.




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