请问 这个类中实例化的对象a 和b能够 转换吗?如果能请给出方法谢谢!

julian6616 2008-04-01 11:30:46
代码如下:在Employee类的对象 a 和 b 能够改变他们的地址引用吗?即在调用swap方法后 使得 a.name = Bob b.name=Alice。 还有一个附加的问题就是 如果 class Employee 是一个大的程序中得一部分 ,那么Employee中的main方法能被运行吗?为什么不能啊。请大家帮我看看 谢谢了!

public class ParamTest {
public static void main(String[] args){
Employee a = new Employee("Alice",70000);
Employee b = new Employee("Bob",60000);
System.out.println("Befor: a = " + a.getName());
System.out.println("Befor: b = " + b.getName());
swap(a,b);
System.out.println("After: a= " + a.getName());
System.out.println("After: b= " + b.getName());
}

class Employee{

public Employee(String n,double s){
name = n;
salary = s;
}
public String getName(){
return name;
}
public double getSalary(){
return salary;
}
private String name;
private double salary;
public static void main(String[] args){
Employee e = new Eployee("Romeo",5000);
System.out.println(e.getName);
}

}
...全文
148 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
julian6616 2008-04-01
  • 打赏
  • 举报
回复
首先,谢谢yibunengjing,kevinchj ,changjiangzhibin 得回复
一,回复yibunengjing:1只所以没写swap方法就是想在这个方法里怎样写才能使得a.name = Bob b.name=Alice其次,我的
2.不好意思写的有错误,在class Employee类前应该有一个化括号的。所以我这里面的class Employee并不是public class ParamTest的内部类。
二,回复kevinchj :我在java2核心技术书中看到这样一句话:“如果class Employee 是一个大型应用程序中的一部分 ,那么Employee中的main方法永远不会被执行。”我不明白所以就提出了第二个问题。
三,回复changjiangzhibin :能给swap种代码的实现写一下吗,我就是不明白怎么样才能使a.name = Bob b.name=Alice 想看看是怎么实现的。
changjiangzhibin 2008-04-01
  • 打赏
  • 举报
回复
swap方法中用变量的引用,就可实现
kevinchj 2008-04-01
  • 打赏
  • 举报
回复
一个程序只能有一个main方法,单独运行Employee,当然可以。
但是你如果想在别处调用的话,就不应该在Employee中写main方法了。
yibunengjing 2008-04-01
  • 打赏
  • 举报
回复
1.没有看见swap方法,不知道干什么用的
2.有关main方法只能用在主类中,你这个程序中是把Employee作为内部类,当然不能在这里写main方法
julian6616 2008-04-01
  • 打赏
  • 举报
回复
感谢 zrzlj 的回复和解答.等我结帖子给您分!谢谢!
  • 打赏
  • 举报
回复
直接写引用的交换是不行的,比如下面的代码:
public void swap(Employee a, Employee b){
Employee c = a;
a = b;
b = c;
}
因为a,b是形参,不会改变传入的a, b的引用。

要想交换a,b的内容(a,b是对象的引用,不是基本类型),要想做到交换内容,就要写一个copy方法(随便,就是复制操作),代码例子:

class Employee {
private String name;
private double salary;

public Employee() {

}

public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public double getSalary() {
return salary;
}

public void setSalary(double salary) {
this.salary = salary;
}

public void copy(Employee em) {
this.name = em.getName();
this.salary = em.getSalary();
}
}

public class TestCode {
public static void main(String[] args) {
Employee a = new Employee("Bob",1000);
Employee b = new Employee("Alice",2000);
System.out.println("a.name="+a.getName());
System.out.println("b.name="+b.getName());
swap(a,b);
System.out.println("a.name="+a.getName());
System.out.println("b.name="+b.getName());
}

public static void swap(Employee a, Employee b) {
Employee c = new Employee();
c.copy(a);
a.copy(b);
b.copy(c);
}
}

62,623

社区成员

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

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