菜鸟问题!!!

ggggosling 2004-09-03 08:39:27
一个员工类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????

...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyfoxx 2004-09-03
  • 打赏
  • 举报
回复
x y 不变!
flyfoxx 2004-09-03
  • 打赏
  • 举报
回复
第二例子中 a是x副本指向x,b是y的副本指向y 。 在swap交换之后 只是变成a 指向y b指向x
flyfoxx 2004-09-03
  • 打赏
  • 举报
回复
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 的是两个对象的副本 对本身两个对象是没有影响的。
ggggosling 2004-09-03
  • 打赏
  • 举报
回复
在线等啊!
ggggosling 2004-09-03
  • 打赏
  • 举报
回复
大人们帮忙啊!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧