java数组的引用传递_在Java中通过值传递或通过引用传递的数组?

从技术上讲,它是通过value …传递的,但是值是对数组的引用。

通过引用的实际传递涉及传递变量的地址,以便可以更新变量。这不是当你在Java中传递数组时会发生什么。

(这个Java文档页面可能会帮助你理解这一点:陷阱:将变量视为对象。)

这里有一些链接,解释“传递引用”和“传递值”之间的区别:

相关问题:

历史背景:

短语“pass-by-reference”最初是“call-by-reference”,它用于区分FORTRAN(call-by-reference)的参数传递语义与ALGOL-60和按名称调用)。

>在调用值中,参数表达式被计算为一个值,并且该值将被复制到被调用的方法。

>在调用引用中,参数表达式被部分计算为传递给调用方法的“lvalue”(即变量或数组元素的地址)。然后调用方法可以直接读取和更新变量/元素。

>在调用名称中,实际的参数表达式被传递给调用方法(!!),它可以多次计算(!!!)。这实现起来很复杂,可以使用(滥用)编写很难理解的代码。 Call-by-name只能在Algol-60中使用(谢天谢地!)。

更新

实际上,Algol-60的call-by-name类似于将lambda表达式作为参数传递。皱纹是这些不完全的lambda表达式(它们在实现级别被称为“thunk”)可以间接地修改调用过程/函数中范围内的变量的状态。这是什么使他们这么难以理解。 (例如,参见Jensen’s Device上的维基百科页面。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值