Java方法参数传递方式

参考:Java核心技术I


程序设计语言中有关将参数传递给方法(这里就说2种):

1.call by value     值调用

2.call by reference   引用调用



1.值调用:表示方法接收的是调用者提供的值。

在java中,总是采用按值调用。

当传递的是基本类型,如int,double,float等时,方法得到的时所有参数值的一个拷贝。所以

在方法体内,无论怎么修改拷贝变量,都无法改变传递给它的任何参数变量的内容。


除了基本类型,还有另外一种参数就是对象了。但是,在java中同样时采用call by value(按值调用)。这里有许多人

都存在误解,认为是call by reference。

引用调用强调的是调用者给方法提供变量的地址,而在java中其实不是。当在方法中传递一个对象时,调用者会将

对象参数(对象变量名,是对对象的引用)拷贝一份(这里拷贝的是一份新的对象引用,而不是新的对象),再将

该拷贝引用传递给方法。这里与call by referencce的主要区别就是,call by reference强调的是传递变量的地址(

也就是对象变量的地址),而再java中实际传递的却不是这个地址,而是引用的拷贝。所以说这种传值也是call by value。



举例说明:

1.call by value:

int x=1;

int y=2;

chang(x,y);

输出x:1 y:2

无论再chang中怎么改,对外面的x,y都没影响。

如果是引用调用,那么再chang(x,y)的参数里,传递的是地址,所以再chang里的任何修改,将直接影响外面的x,y

(值调用就是以上这个意思)把这个例子里的基本类型换成对象,同样有效。唯一的区别是,通过调用引用的对象里的

方法可以修改这个对象里的值,这样就影响了外部的x,y了。因为传递对象时,传递的时引用拷贝,而不是真正拷贝另外

一个对象。实参和形参都访问同一个对象(在内存中)。





2.引用调用:接收的是调用者提供的变量地址。

(可以参考百度)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值