Java方法参数(一)

来源:互联网 发布:上古卷轴4捏脸数据 编辑:程序博客网 时间:2024/06/07 10:17

最近在看《java核心技术卷1》,看到4.5章节的时候解决了以前一直有些疑惑的问题。


记录如下:


首先,在程序设计语言中,将参数传递给方法(或函数)的术语有:


按值调用(call by value)表示方法接收的是调用者提供的值。

按引用调用(call by reference)表示方法接收的是调用者提供的变量地址。

书中还提到了Algol的按名称调用。


在java中:

java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容。


例如,考虑代码:

double percent = 10;harry.raiseSalary(persent);
暂且不用管这段代码的具体实现,书中这个章节用了雇员类来解释很多事情,我们现在只要知道这种调用的方式并不能让percent的值进行改变就可以了。


以上是一个简单的例子,说明了java参数传递的方式。下面将从参数为基本数据类型和对象引用两种情况进行分析:


方法参数为基本数据类型:

public static void tripleValue(double x){       x = 3 * x;}

然后调用:

double percent = 10.0;tripleValue(percent);
调用之后,percent的值还是10.0,并没有什么变化。

下面看一下具体的执行的过程:

1.x被初始化为percent值的一个拷贝,也还是10。

2.x被乘以了3,然后x变成了30,但是percent仍然是10,因为毕竟是对x的操作,并没有改变percent。

3.方法结束之后,x被弃用了,结果percent还是10。





0 0