java中的or_Java值传递OR引用传递

忘掉它吧,硬套C++的概念没有任何意义。C++中提出引用传递是为了更好的表达自己传递的是参数地址还是具体参数,而Java中根本不支持 & 符号也即是无法传递参数地址,按照概念,毫无疑问Java都是值传递。 概念的出现不应该是帮助我们更好的厘清问题嘛,讨论这种问题意义似乎并不是太大。

下面是百科的定义:

值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

在C++中,函数参数的传递方式有引用传递。所谓引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

但是,理解实际的运行机制还是非常有必要的:

在JVM解析阶段:

1.基本数据类型,会将数据直接拷贝一份到被调用栈中,并将地址赋给参数变量

2.引用数据类型(与地址相关的数据类型),也会直接拷贝一份到被调用栈中,并将地址赋给参数变量

JAVA中,当我们更改基本数据类型变量的值或者引用数据类型变量的值时,我们都是改变的当前栈中拷贝数据地址中的值。

划重点:其实变量在解析后都是不存在的,他们都会被替换为实际类型地址,只是让我们记忆地址太难了。

其实,无论值传递还是引用传递都会在被调用栈中开辟一块地址,存储参数数据

对于C++的引用传递呢?   其实也差不多,只不过在被调用栈中分配了一块当前类型的地址类型的空间,并将调用栈中数据的地址存储在这块空间中。 (注意,不是值,而是地址。)。

这时,我们可以通过操作调用栈中数据的地址,来更改调用栈地址中的数据。

害,该学学画图了!

============================================================

|| 我是小布,小布又作小步的意思,哪怕小步前行,也希望自己一直坚持下去!||

============================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值