对象做参数,传过去的是地址。
所以你在你调用的方法里面可以修改对象的某些属性(值),基本数据类型就不可以。Java中数组也是传递地址的。
因此我们如果在某些地方调用其他方法时,需要用传进去的参数把结果带回来,就可以用对象或者数组做参数,但用基本数据类型,就不能把结果带回来
其实这个问题是很简单的,但是答案好像一直有争议.
其实争议的内容我认为只是玩文字游戏而已.
举个例子:
Object obj = new Object();
XXXX.xxxx(obj);
大家都知道,xxxx方法改为了通过调用obj的方法改变了内容后,obj对象的内容也会发生改变,从其它语言(比如VB)的角度来看,这就是按地址传递.
但为什么有人说是按值传递呢?他们是这样认为的:第1句代码中,对象创建后obj的值实际上是一个整形的内存地址(如:1234),当它作为参数进行传递时,XXXX对象会创建一个整形变量接受"1234"的值,所以是按值传递(准确的说法是:传递的是对象的引用的值).
双方对整个过程的工作原理都是没有异议的,答案不同只是文字游戏而已.
在java中对象作为参数,一样也是值传递,只不过传过去的是对象的引用的值。
其实java中的引用就相当于c语言里的指针的作用,只要学过c语言,知道了数值在内存中的存放方式就不难理解了。
java中的基本类型和string是传递了一份参数的拷贝
其他的则是传递了对象的地址的拷贝。
地址