首先回顾一下在程序设计语言中有关将参数传递给方法(或函数)的一些专业术语。按值调用 (call by value) 表示方法接收的是调用者提供的值。而按引用调用 ( call by reference)表示方法接收的是调用者提供的变量地址。 按… 调用”(call by) 是一个标准的计算机科学术语,它用来描述各种程序设计语言(不只是 Java ) 中方法参数的传递方式。
Java 程序设计语言总是采用按值调用。也就是说, 方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容。例如, 考虑下面的调用:
double percent = 10;
harry.raiseSalary(percent):
在方法调用之后, percent 的值还是 10。
方法参数共有两种类型:
- 基本数据类型(数字、布尔值)
- 对象引用
一个方法不可能修改一个基本数据类型的参数。而对象引用作为参数就不同了,可以很容易地利用下面这个方法实现将一个雇员地薪金提高两倍的操作:
public static void tripleSalary (Employee x) // works
{
x.raiseSa1ary(200);
}
当调用
harry = new Employee(. . .);
tripleSalary(harry);
时,具体的执行过程为:
- x被初始化为 harry 值的拷贝,这里是一个对象的引用。
- raiseSalary 方法应用于这个对象引用。x 和 harry 同时引用的那个 Employee 对象的薪金提高了 200%。
- 方法结束后,参数变量 x 不再使用。当然,对象变量 harry 继续引用那个薪金增至 3倍的雇员对象
下面总结一下 Java 中方法参数的使用情况:
- 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)
- 一个方法可以改变一个对象参数的状态。
- 一个方法不能让对象参数引用一个新的对象。