菜鸟问题!!!
一个员工类Employee
一个加薪函数:raisesalary()
public static void tripleSalary(Employee x)
{
x.raiseSalary(200);
}
harry=new Employ(...);
tripleSalary()harry;
他的工作过程是怎样的?为什么x会改变harry的值.
下一个例子:public static void swap(Employee a,Employee b)
{
Employee temp;
temp=a;
a=b;
b=temp;
}
class Myclass
{
public static void main(String[] args)
{
Employee x=new Employee(...);
Employee y=new Employee(...);
swap(x,y);
}
}
为什么不可以交换x,y????
问题点数:20、回复次数:5Top
1 楼ggggosling(爪哇娃)回复于 2004-09-03 20:43:56 得分 0
大人们帮忙啊!
Top
2 楼ggggosling(爪哇娃)回复于 2004-09-03 20:54:08 得分 0
在线等啊!Top
3 楼flyfoxx(fox)回复于 2004-09-03 21:30:09 得分 14
public static void tripleSalary(Employee x)
{
x.raiseSalary(200);
}
harry=new Employ(...);
tripleSalary(harry);
这个例子调用 tripleSalary(harry);方法时 harry 的副本被传到 方法中。
然后 通过 raiseSalary 方法 改变 harry 里面 表示薪金的成员域(field)的值 !
下一个例子:public static void swap(Employee a,Employee b)
{
Employee temp;
temp=a;
a=b;
b=temp;
}
class Myclass
{
public static void main(String[] args)
{
Employee x=new Employee(...);
Employee y=new Employee(...);
swap(x,y);
}
}
这个例子中 传入swap 的是两个对象的副本 对本身两个对象是没有影响的。
Top
4 楼flyfoxx(fox)回复于 2004-09-03 21:35:34 得分 3
第二例子中 a是x副本指向x,b是y的副本指向y 。 在swap交换之后 只是变成a 指向y b指向xTop
5 楼flyfoxx(fox)回复于 2004-09-03 21:36:17 得分 3
x y 不变!Top




