• Java编程语言是什么传递,即值传递和引用传递的区别


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

    答案是:值引用

    因为Java编程语言只有值传递参数。

    当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。

    1.Java中没有指针,所以也没有引用传递了,仅仅有值传递。不过,可以通过对象的方式来实现引用传递。类似java没有多继承,但可以用多次implements接口实现多继承的功能。

    2.在Java应用程序中永远不会传递对象,而只传递对象的引用。因此是按引用传递对象。但重要的是要区分参数是如何传递的。

    3.Java应用程序按引用传递对象这一事实并不意味着 Java 应用程序按引用传递参数。参数可以是对象引用,而 Java应用程序是按值传递对象引用的。

    4.Java应用程序中的变量可以为以下两种类型之一:引用类型或基本类型。当作为参数传递给一个方法时,处理这两种类型的方式是相同的。两种类型都是按值传递的,没有一种按引用传递。

    我的理解是
    这里Java的参数传递是值传递,传递的虽然是这个对象的引用的一个copy。可以在方法内部修改传入对象的属性,但是不能改变这个引用本身。可以理解为传递一个指针的值进来,你可以修改这个指针指向的内存里的数据,但是修改指针本身是没有意义的。但如果你修改了本身是会发生该对象指向其他地方的内容

    所谓的值传递和引用传递都只是在《Java的参数传递是值传递》进行的强行再细分。

    值传递和引用传递

    值传递
    值传递指的是方法被调用时传递进来的参数是一个副本(拷贝),而不是传递进来参数本身。换句话说对值传递参数的修改不会影响到调用方传递的参数对象;

    引用传递
    而引用传递指的是方法被调用时传递进来的参数是一个引用,换句话说传递进来的参数是指向调用方传递的参数本身的。对引用传递的参数的修改会影响到调用方传递的参数对象。

    用数组来举例就最清楚了,例如我们定义一个数组a[]={1,2};
    那么a[0]=1,a[1]=2。
    如果我们把数组a里的元素值作为参数传递,实际上只是进行了值传递,对数组本身没有影响
    如果我们把 数组a的指针作为参数传递,那么假如处理的函数就可以直接修改数组a里的值。

  • 相关阅读:
    电视连续剧 ffmpeg 批量去掉片头片尾
    SpringBoot-20-模块开发-404页面
    Django模型的继承
    51单片机STC89C52RC——9.1 DS1302涓流充电计时芯片
    PostgreSQL — 安装及常用命令
    2022李宏毅作业hw1—新冠阳性人员数量预测。
    Spring Cloud:面向应用层的云架构解决方案
    三个步骤搞定 MySQL,offer到手。
    推荐系统中的公平性
    【数据结构与算法】链表的实现以及相关算法
  • 原文地址:https://blog.csdn.net/munangs/article/details/128062000