java中的方法参数
首先回顾一下程序设计语言中有关参数传递给方法的专业术语。
按值调用:表示方法接收的是调用者提供的值。
按引用调用:表示方法接收的是调用者提供的变量地址。
java中总是采用按值调用。也就是说,方法得到的都是参数值的一个拷贝。
按值调用:
public class text {
public static void main(String args[]){
int a = 1;
int b = 2;
swap(a,b);
System.out.println("a="+a);
System.out.println("b="+b);
}
public static void swap(int i,int n) {
int temp;
temp = i;
i = n;
n = temp;
return ;
}
}
输出结果为a = 1,b = 2
为什么会这样呢?这就是按值引用,swap(a,b)只是将a,b的值传递给了swap方法,并没有真正改变a,b的值。
按引用调用:
//此前定义了一个employee类实例域包括name age salary,方法有一个含参的构造方法一个展示的toString方法,和实例域对应的SetGet方法
public static void main(String args[]){
Employee Tom = new Employee("Tom",20,5000);
Employee Jarry = new Employee("Jarry",19,10000);
swap(Tom,Jarry);
System.out.println(Tom.toString());
System.out.println(Jarry.toString());
}
public static void swap(Employee n,Employee m) {
Employee temp = new Employee(" ",0,0);
temp.setName(n.getName());
n.setName(m.getName());
m.setName(temp.getName());
return ;
}
其结果为
Employee [name=Jarry, salary=5000.0, age=20]
Employee [name=Tom, salary=10000.0, age=19]
这个为什么又将name更换了呢?这就是按引用调用了,在这个swap方法中更换的不是m,n两个Employee对象,而是在操作Tom和Jarry对象将这两个对象的name更换了,所以才有了这个结果。