您的位置:首页 > 编程语言 > Java开发

Java方法参数传递方式

2017-08-01 10:11 267 查看
参考: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.引用调用:接收的是调用者提供的变量地址。

(可以参考百度)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: