美文网首页
Java中仅存在值传而不是引用传递

Java中仅存在值传而不是引用传递

作者: VincentTown | 来源:发表于2020-10-09 15:46 被阅读0次

结论:Java中仅存在值传递而不存在引用传递

这是一个十分容易犯错的地方,甚至很多时候老师也没有注意到这个问题。

首先给出一个例子来证明这个问题


class Solution {

public void swap(char []a){

char []temp =new char[]{'1','2','3'};

        a = temp;

        System.out.println("test:" + a);

    }

public static void main(String[] args) {

char []test =new char[]{'4','5','6'};

        System.out.println("test:" + test);

        Solution solution =new Solution();

        solution.swap(test);

        System.out.println(Arrays.toString(test));

    }

}

这段代码的操作是,更换原字符数组的指向。原数组指向['4','5','6'],如果Java中是引用传递的话,使用swap()函数可以改变外部指针的指向,进而将test 指向的数组改为['1','2','3']。实验结果如下:

我们不难test的指向仍为['4','5','6']这从侧面反应了java中不是引用传递了,说明Java中是值传递。但根据我们的经验,我们可以通过函数修改数组中的值,那这又是怎么一回事呢?

不妨用下图来进行解释:

我们是将指向数组的值进行复制,当你更改复制后的的指向是不能改变原来指向的。

同理,我们用复制后的指向仍然是可以修改数组中的值。

总结

我们可以通过钥匙开门的例子来进行对比,引用就是直接把开门的钥匙递给你,而值传则是将钥匙进行了复制。

当然这两把钥匙都给打开同一个门,也能对门中的元素进行操作。但终究他们不是一把钥匙。

相关文章

  • java--参数传递问题

    【前方注意】:java中只存在值传递,值传递,值传递!!! 一、值传递(一切传引用其实本质上是传值) 总所周知,j...

  • Java 中的值传递

    其实 Java 中是只存在值传递的,不存在引用传递。因为我们大多数人是从 C 语言入门,而 C 语言中是存在引用传...

  • JavaSE基础面试题

    1、Java里的传引用和传值的区别是什么? 答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。 ...

  • Java中仅存在值传而不是引用传递

    结论:Java中仅存在值传递而不存在引用传递 这是一个十分容易犯错的地方,甚至很多时候老师也没有注意到这个问题。 ...

  • [译] Java 值传递 VS 引用传递

    Java是值传递还是引用传递一直都有争论,我们最终下个结论,Java是值传递而不是引用传递。如果Java是引用传递...

  • java中的参数传递(只有值传递没有引用传递)

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • 解决java中的参数传递问题

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • Java Lambda表达式引用局部变量的原理

    规则1 Java中变量分为:基本类型变量和引用类型变量 规则2 Java方法传参只有值传递,没有引用传递,传递的值...

  • 聊聊Java内部类

    一.磨叽磨叽Java值传递与引用传递 “在Java里面参数传递都是按值传递”即:按值传递是传递的值的拷贝,按引用传...

  • Java的引用传递和值传递

    首先,Java中并不存在指针,但有类似的现象,叫“引用传递”。一部分人觉得java中存在【引用传递】和【值传递】,...

网友评论

      本文标题:Java中仅存在值传而不是引用传递

      本文链接:https://www.haomeiwen.com/subject/vgmlpktx.html