为什么说java中只有值传递

为什么说java中只有值传递

值传递和引用传递定义

  • 值传递(pass by value):在调用函数时将实际参数复制一份(即创建副本,基本类型复制它的值,引用类型复制它的地址)传到函数中,这样对参数进行修改(这里指改变形参指向的地址),不会影响到实参(但是改变形参对象内容–指向地址内的内容,还是能够改变实参–比如说改变实参对象的属性值)
  • 引用传递(pass by reference):调用函数时将实际参数的地址(即实际对象)直接传递到函数中,那么在函数中对参数进行修改(改变它的指向,比如说指向一个new的对象),将直接影响到实参(因为就是对实际对象进行操作)。
值传递引用传递
根本区别创建副本直接传递实参(实参对象)
所以函数中无法改变原始对象函数中可以改变原始对象
  • 比喻:你有一把钥匙,朋友想来你家。

    • 值传递-你复刻一把钥匙,把复刻的钥匙给朋友,朋友无论对复刻的钥匙做什么(比如说在钥匙上刻字),都不会影响你手上的原钥匙,但是用钥匙打开房子,改变房子里的布置,就相当于改变了对象的属性,改变的不是钥匙,而是钥匙打开的房子
    • 引用传递-你直接把手里钥匙给朋友
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值