Topic: 奇怪,关于equals方法的一个例子

  Print this page

1.奇怪,关于equals方法的一个例子 Copy to clipboard
Posted by: glq2000
Posted on: 2006-11-04 09:00

我写了一个关于equals方法的的例子,我的疑问是如果Student类没有重写父类Object中的equals方法而直接使用它时 ,为什么在该返回true时也返回false呢 ?谢谢
class Student
{
   private String name;
   private int age;
   public Student(String name,int age)
   {
     this.name=name;
     this.age=age;
   }
   public boolean equals(Object obj)//如果不重写Object父类中的equals方法的话,则总是返回false;
{
     Student st=null;
     if(obj instanceof Student)
     {
       st=(Student)obj;
       if(st.name==name&&st.age==age)
         return true;
       else
         return false;
     }
     else
       return false;
  }
   public static void main(String [] args)
   {
     Student st1=new Student("wangwu",20);
     Student st2=new Student("wangwu",20);
     if(st1.equals(st2))//假设上面没有重写equals方法,则总是返回false;为什么会这样呢??
       System.out.println("equals");
     else
       System.out.println("not equals");
   }
}

2.Re:奇怪,关于equals方法的一个例子 [Re: glq2000] Copy to clipboard
Posted by: ranchgirl
Posted on: 2006-11-04 09:44

Read the source code Object.java, please!!!!

Thanks!

3.Re:奇怪,关于equals方法的一个例子 [Re: glq2000] Copy to clipboard
Posted by: zhangwensheng
Posted on: 2006-11-07 13:19

st1和st2是类Student的两个不同实例,怎么会相等呢!

4.Re:奇怪,关于equals方法的一个例子 [Re: glq2000] Copy to clipboard
Posted by: bd0571
Posted on: 2006-11-13 19:31

每次new一个对象返回的只是一个引用变量,它指向这个对象,但它并不是这个对象。
public boolean equals(Object obj) {
  return (this == obj);
}
这是没有重写时候调用的方法,不同的对象是不可能返回true的。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923