java中是值传递还是引用传递呢?

java中的参数传递方式只存在值传递。
在参数传递过程中,实质是将实参的值拷贝了一个副本赋给形参变量,而实参自己并不受形参的改变而影响自己。
举个例子:你将整型int 的两个变量的值传递给一个方法,在方法内将两个变量的数值进行交换,方法返回到main时,输出这两个变量,你会发现对这两个变量并没有影响。实质就是main方法调用别的方法时,会为别的方法也生成一个方法栈用于存储该方法的局部变量,且调动方法时传递的参数只是当前变量的一个副本,所以在方法内交换形参的数值对main方法内的局部变量时没有任何影响的。
如下图所示
在这里插入图片描述
可能有人会有疑惑,那当形参变量为对象引用时,通过形参变量不是能够改变对象的值吗?确实,但是其改变的是引用指向的对象的值,而不是实参的值。实参所传递给形参的也是实参值的一个副本,只不过这个值刚好是指向对象的地址值而已,使得形参可以操作所指向的对象。此时实参和形参都指向了同一个对象,给人一种引用传递的假象。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值