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

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

针对这3条,我们先来看几个demo,并猜测一下输出
java中是值传递还是引用传递

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

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

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

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

好我们回过头去,重新理解一下我们一开始的总结。其实我们比喻的缸其实指的就是对象,当我们传递参数的为对象的时候可以改变对象里面状态,但是不能将对象参数替换为一个新的对象。