Java中方法参数的总结

6次阅读

共计 728 个字符,预计需要花费 2 分钟才能阅读完成。

方法参数

方法得到的都是所有参数值的拷贝,方法不能修改传递给它的任何参数变量的内容。
参数共有两种类型:

  • 基本数据类型
  • 对象引用

除了基本数据类型的都是对象引用,包括数组等等。

很容易得知,一个方法不可能改变一个基本数据类型的参数,下面讨论参数的对象的情况。
下面这个方法可以将一个雇员的薪金提高两倍

public static void tripleSalary(Employee x)
{x.raiseSalary(200);
}

当调用

harry = new Employee(...);
tripleSalary(harry);

时,执行过程如下:

  1. x 被初始化为 harry 值的拷贝,x 是对象的引用。x 和 harry 同时指向相同的对象。
  2. raiseSalary 方法应用于这个对象引用。x 和 harry 同时引用的那个 Employee 对象的薪金提高了 200%。
  3. 方法结束之后,x 不再使用。harry 继续引用那个增长了薪金的对象

Java 中都是值传递,而不是引用传递

下面这个方法用来交换两个雇员对象(其实做不到):

public static void swap(Employee x, Emploee y)//doesn't work
{
    Employee temp = x;
    x = y;
    y = temp;
}

如果 Java 对对象采用的是按引用(地址)调用那么这个方法可以实现两个对象交换数据的效果。

Employee a = new Employee("Alice",...);
Employee b = new Employee("Bob",...);
swap(a,b);

但是执行完该方法后,a 和 b 所引用的对象并没有改变。x 和 y 在方法执行过程中所引用的对象改变了,但是 a 和 b 引用的对象并没有改变,因为 x 和 y 只是“复制品”。
这个过程说明,对象引用也是按值传递的。

正文完
 0