学习Java——值传递
创始人
2025-05-29 23:05:56

目录

引言

实参与形参 

求值策略

 严格求值


引言

        关于Java中方法间的参数传递到底是怎样的、为什么很多人说Java只有值传递等问题,一直困惑着很多人,在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了。如果你有以下想法,那么你有必要好好阅读本文。

错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。

错误理解二:Java是引用传递。

错误理解三:传递的参数如果是普通类型,那就是值传递,如果是对象,那就是引用传递。

实参与形参 

        我们都知道,在Java中定义方法的时候是可以定义参数的。比如Java中的main方法,public static void main(String[] args),这里面的args就是参数。参数在程序语言中分为形式参数和实际参数。

形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。

实际参数:在调用有参函数时,主调函数和被调函数之间有数据传递关系。在主调函数中调用一个函数时,函数名后面括号中的参数称为“实际参数”。

 举个“栗子”:

public static void main(String[] args) {ParamTest pt = new ParamTest();pt.sout("Hollis");//实际参数为 Hollis
}public void sout(String name) { //形式参数为 nameSystem.out.println(name);
}

实际参数是调用有参方法的时候真正传递的内容,而形式参数是用于接收实参内容的参数。

求值策略

         我们说当进行方法调用的时候,需要把实际参数传递给形式参数,那么传递的过程中到底传递的是什么东西呢?

        这其实是程序设计中求值策略(Evaluation strategies)的概念。

在计算机科学中,求值策略是确定编程语言中表达式的求值的一组(通常确定性的)规则。求值策略定义何时和以何种顺序求值给函数的实际参数、什么时候把它们代换入函数、和代换以何种形式发生。

        求值策略分为两大基本类,基于如何处理给函数的实际参数,分位严格的和非严格的。

 严格求值

        在“严格求值”中,函数调用过程中,给函数的实际参数总是在应用这个函数之前求值。多数现存编程语言对函数都使用严格求值。所以,我们本文只关注严格求值。

        在严格求值中有几个关键的求值策略是我们比较关心的,那就是传值调用(Call by value)、传引用调用(Call by reference)以及传共享对象调用(Call by sharing)。

  • 传值调用(值传递)
    • 在传值调用中,实际参数先被求值,然后其值通过复制,被传递给被调函数的形式参数。因为形式参数拿到的只是一个"局部拷贝",所以如果在被调函数中改变了形式参数的值,并不会改变实际参数的值。
  • 传引用调用(引用传递)
    • 在传引用调用中,传递给函数的是它的实际参数的隐式引用而不是实参的拷贝。因为传递的是引用,所以,如果在被调函数中改变了形式参数的值,改变对于调用者来说是可见的。
  • 传共享对象调用(共享对象传递)
    • 传共享对象调用中,先获取到实际参数的地址,然后将其复制,并把该地址的拷贝传递给被调函数的形式参数。因为参数的地址都指向同一个对象,所以我们称也之为"传共享对象",所以,如果在被调函数中改变了形式参数的值,调用者是可以看到这种变化的。

        不知道大家有没有发现,其实传共享对象调用和传值调用的过程几乎是一样的,都是进行"求值"、"拷贝"、"传递"。

        但是,传共享对象调用和内传引用调用的结果又是一样的,都是在被调函数中如果改变参数的内容,那么这种改变也会对调用者有影响。你再品,你再细品。

        那么,共享对象传递和值传递以及引用传递之间到底有很么关系呢?

        对于这个问题,我们应该关注过程,而不是结果,因为传共享对象调用的过程和传值调用的过程是一样的,而且都有一步关键的操作,那就是"复制",所以,通常我们认为传共享对象调用是传值调用的特例

        我们先把传共享对象调用放在一边,我们再来回顾下传值调用和传引用调用的主要区别:

传值调用是指在调用函数时将实际参数复制一份传递到函数中,传引用调用是指在调用函数时将实际参数的引用直接传递到函数中。


        人生就像一杯茶,不会苦一辈子,但总会苦一阵子。 ————《人民日报》

相关内容

热门资讯

重磅!2025陆家嘴论坛6月1... 《国际金融报》记者获悉,5月30日,上海市政府举行新闻发布会,上海市委金融办、中国人民银行办公厅、上...
零基础入门学习Python 0... 目录 1.函数的参数  2.函数文档 3.返回值  4. 局部变量全局变量 5.内嵌函数 6.闭包...
剧本中的灭世海啸即将到来?特朗... 欢迎来到:自说自话的总裁两周前,94岁的巴菲特在退休直播中说,美元,将「下地狱」,我们不会投资。这句...
sdbusplus:servi... 有的时候需要在service(记做s1)的method内访问其他serv...
EEPROM芯片(24c02)... 1、前言 (1)本文主要是通过24c02芯片来讲解I2C接口的EEPROM操作方法,...
鼓励中长期资金指数化投资!上证... 文/王兆寰2025年5月30日下午,上海证券交易所与中证指数公司公布优化上证380指数编制方案,并发...
龙虎榜丨机构今日买入这15股,... 盘后数据显示,5月30日龙虎榜中,共33只个股出现了机构的身影,15只股票呈现机构净买入,18只股票...
年轻人的“茅台”新高不断!重仓... 今年以来,新消费概念股走势强劲。港股的泡泡玛特(国内潮玩行业龙头)今年来新高不断,截至2025年5月...
履新超130天,荣耀CEO李健... 5月下旬,一系列新品发布浪潮席卷而来。中端智能手机市场本就是国内各大厂商的战略要地,如今竞争再度白热...
岷山环能IPO:全员被批“学历... 近日,北交所官网显示,岷山环能高科股份公司(以下简称“岷山环能”)IPO提交注册。据悉,岷山环能20...
【TDengine】一篇文章带... 目录 1、通过docker方式安装 2、相关步骤解释 3、停止运行taos与卸载 1、通过doc...
华人健康并购狂飙:24倍溢价、... 本报(chinatimes.net.cn)记者于娜 见习记者 赵文娟 北京报道在医药零售行业整体放缓...
“国产版ChatGPT”文心一... 文章目录前言实验结果一、文学创作问题1 :《三体》的作者是哪里人?问题2:...
上海试点不动产信托登记,相关税... 继北京之后,上海也开始探索不动产信托财产登记确权新机制。中共上海市委金融委员会办公室、 国家金融监督...
德邦证券董事会改组后“换帅”,... 德邦证券 视觉中国 资料图德邦证券股份有限公司(下称“德邦证券”)步入国有实控阶段后,同步“换帅”...
连续盈利后,理想要靠纯电车赚钱... 增程市场进入红海后,覆盖新能源市场中更多品类,以及进入下沉市场是理想汽车下一步重心文|陈亮 蒋雨彤编...
字节短剧大地震:红果吞并抖音团... 2025年5月29日,抖音集团宣布成立“短剧版权中心”,整合旗下抖音短剧、红果短剧相关BD团队(商务...
算法基础课 算法基础课 第一章 基础算法(一) 1.快速排序——分治[O(n log...
通用航空ETF基金今日上市 低... 中证网讯 5月30日,华夏国证通用航空产业ETF(基金简称:通用航空ETF基金,基金代码:15923...
马斯克放豪言:特斯拉人形机器人... IT之家 5 月 30 日消息,SpaceX 和特斯拉的 CEO 埃隆・马斯克在今日的“Road t...
iOS_performSele... 看一下以下方法的执行结果: 例1:全局并发队列中执行异步任务 dispa...
来了!新型浮动费率基金| 一文... 首批新型浮动费率基金,本周开卖!这是公募改革方案发布后率先推出的创新产品,是将基金公司与投资者利益深...
刷题笔记之十三(有假币、最难的... 目录 1. 求正数数组的最小不可组成和 2. 有假币 3. 继承时先调用父类的构造方法;类中的成员变...
县城的万达广场,王健林才舍不得... 来源:源Sight记者:王言流动危机下,王健林似乎铁了心要将家底一卖到底。近日,国家市场监管总局披露...
三度递表终闻锣响 手回集团今日... 南方财经全媒体记者 林汉垚 北京报道三闯港交所终圆梦。5月30日,历经两次递表折戟后,小雨伞保险经纪...
后“531时代”来袭!隆基绿能... “物竞天择,适者生存。一款产品‘打天下’的时代已经终结,光伏市场已经进化到组件差异化的时代,分布式市...
英伟达吞下45亿美元“哑巴亏”... 出品 | 虎嗅科技组作者 | 丸都山编辑 | 苗正卿头图 | 视觉中国一份喜忧参半的财报,却罕见地让...
授之以渔篇-论文目录设置、双边... 文章目录细说风云自定义目录页眉、页码空白页删除缘起 细说风云 因为平日使用WPS比较习惯࿰...
基于jeecgboot的大屏设...      之前主要是讲了数据源的录入与数据库测试功能,但保存这块没有说,...
江丰电子,8年狂飙14倍,全国... 2017年6月,江丰电子登陆资本市场,发行价4.64元;截至2025年5月29日,按后复权计算,江丰...