为什么要重写equals 谁给我举个通俗的例子

解决方案 »

  1.   

    java本身的equals只判断两个对象是不是一个对象~
    比如两个对象不同,但是里边对应的属性的值都是相同的,原有的equals会返回false;此时可重写这个函数,根据属性进行判断,返回TRUE.
      

  2.   

    public class test { /**
     * @param args
     */
    private int num_a;
    private int num_b;

    public boolean equals(test params)
    {
    if(this.num_a==params.num_a&&this.num_b==params.num_b)
    {
    return true;
    }
    else
    {
    return false;
    }
    }
    }
    //结贴是一种动力,更是一种美德
      

  3.   

    equals默认是== ,比较引用,而不是实值。若要比较实值,就需重写
      

  4.   

    实现equals你想要的功能,你就可以重写equals呀.public int equals(int a){
    int b = 2;
    if(a == b)
    {
    return 0;
    }else if(a > b)
    {
    return 1;
    }else if(a < b)
    {
    return -1;
    }else {
    return -2;
    }
    }
      

  5.   

    因为Java中每个类都会直接或间接的继承Object类,在类中存在一个equals方法,但这个方法比较的是两个引用所指向的是否是同一个对象实例,也就是所谓的地址比较,但我们通常比较的是两个值,而不是地址,所以这个时候就必须要覆盖Object类的equals()方法了!
      

  6.   

    假如你要通过Student的id来判断两个学生是否是同一个学生:
    public boolean equals(Object obj){
           if(!(obj instanceof Student)) return false;
           Student s=(Student)obj;
           return (id==s.id&&name.equals(s.name));
          }