JAVA是引用传递还是值传递"/>
怎么理解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就是值传递
更多推荐
怎么理解JAVA是引用传递还是值传递
发布评论