怎么理解JAVA是引用传递还是值传递

其实这个问题,首先就要先明白常说什么是引用传递,什么是值传递。如果这个没搞懂,就更不要说理解了。引用传递是改地址,值传递不改地址。想象一下,现在张三在北京老家有一栋房子,房子里面有一个苹果。现在张三把钥匙给了小明,这就意味着,他们两个都拥有可能会操作这个房子里的东西了,小明会换成梨子。

好了,User us= new User(‘‘aaa’’)

change(us)

 

public  void  change(uuu){

uuu.setName("bbb")

}

现在有这么两行代码。先说一下,这个change会把us改成bbb。对比上面的,us就是张三这个人,new的对象就是房子包括里面的苹果,aaa就是苹果。uuu是小明,bbb是梨子。

如果我是张三,我要想换成梨子,有两个选择。第一是让别人去把苹果拿出来,授权小明,打开门,苹果拿出来,放个梨子进去,这种情况,房子还在那里,只是东西换了。第二种,授权小明,在另外的地方新建一个房子,放个梨子进去,也同样可以。第一种就是值传递,第二种就是引用传递。

归根结底,引用传递,你授权别人,别人的改变是搞个新的。值传递,你授权别人,别人的改变是替换里面的东西。

回到那个change方法里,不管你在里边怎么改,充其量把值变了,翻不出花样。所以JAVA就是值传递

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值