可能是最通俗的阐述 java到底是值传递还是引用传递

啥也不说上来先看一下总结:
一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。
一个方法可以改变一个对象参数的状态。
一个方法不能让对象参数引用一个新的对象。

针对这3条,我们先来看几个demo,请自行先猜测一下输出结果。
demo1

输出:是5,不是6,也就是你只是拿着我的副本,随便你玩,你大爷还是你大爷。

在这里插入图片描述

输出:0。为啥不是1呢?刚才你不是说传递的是副本嘛随便我怎么玩,这回怎么把我的原件给改了啊?
其实大家可以这么理解,你把arr看成一个水缸,我把水缸借给你玩,你可以往里面给我装沙子,也可以装石头,随便你玩,只要我的缸还是我的缸就行。

好,我们来看最后一个demo。

在这里插入图片描述
这题的输出是什么呢?

其实这题输出的是 1 。这里我们借着上一题的比喻来想,我借给你一口大缸,可能是金的哈,你倒好,直接换给我一口铁缸,那我肯定不干啊是不是。所以他(java)这里也不干,我还是取得是自己的缸里的东西。

好我们回过头去,重新理解一下我们一开始的总结。
一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。
一个方法可以改变一个对象参数的状态。
一个方法不能让对象参数引用一个新的对象。

其实我们比喻的缸其实指的就是对象,当我们传递的参数为对象的时候可以改变对象里面状态,但是不能将对象参数替换为一个新的对象。

有人会说你说了这么多,我都懂 但是JAVA到底是值传递还是引用传递呢?

首先纠正一个错误理解:值传递和引用传递区分条件是传递的内容,如果是个值,就是值传递,如果是个引用就是引用传递。

敲黑板,让我们看一下在百度百科里对这两个概念的正确解释:
在这里插入图片描述在这里插入图片描述当我们有了正确的概念,再结合我刚才举的例子,我们可以得出的答案就是 java应用的是值传递

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值