方法获得的都是全部参数值的拷贝,方法不能修改传递给它的任何参数变量的内容。
参数共有两种类型:java
除了基本数据类型的都是对象引用,包括数组等等。数组
很容易得知,一个方法不可能改变一个基本数据类型的参数,下面讨论参数的对象的状况。
下面这个方法能够将一个雇员的薪金提升两倍code
public static void tripleSalary(Employee x) { x.raiseSalary(200); }
当调用对象
harry = new Employee(...); tripleSalary(harry);
时,执行过程以下:ip
下面这个方法用来交换两个雇员对象(其实作不到):class
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只是“复制品”。
这个过程说明,对象引用也是按值传递的。数据类型