public boolean equals(Object otherObject){
     if (this==otherObject)     
              return true;
        if (otherObject==null)      
           return false;
        if (this.getClass()!=otherObject.getClass())   
           return false;
      //上面的判断已经将不是同一种类型的直接return false了,下面为何还要继续比较判断啊?
        ComplexNumber other =(ComplexNumber)otherObject;
        if (re==other.re && im==other.im)
         return true;
        else 
         return false;
  }

解决方案 »

  1.   

    第一个if 判断是不是自己
    第二个if 任何一个对象实例不能equals false
    第三个if 不是同一个类型返回false。
    接下来转型,判断数据成员的相等与否
      

  2.   

    第3个都判断了是不是同一个类型,后来为什么还要转型?还有楼主发的意思应该是 public boolean equals(Object otherObject){
         if (this==otherObject)     
                  return true;
            if (otherObject==null)      
               return false;
            if (this.getClass()!=otherObject.getClass())   
               return false;}这样为什么会错?
      

  3.   

    那如果都不是同一类型了直接return false啊,那后面还要转型比较干嘛 
      

  4.   

    那如果都不是同一类型了直接return false啊,那后面还要转型比较干嘛 那要是同一类型呢?不比了?
      

  5.   

    //上面的判断已经将不是同一种类型的直接return false了,下面为何还要继续比较判断啊?
    逻辑问题如果不是同一类型return false,如果是,还要继续判断,SO。。
      

  6.   

    他的目的是要重写equals方法,首先如果两个==相同,则可以判断相同了,否则如果有一个为空,则返回false,其次如果类型不同,也可以判断为false,这里完事以后又才做了一些属性的判断,确定是否相同,这种重写是非常容易理解的,请仔细阅读代码,并理解作者的意图
      

  7.   

    是同一种类型,但是他们不一定equals呢,还得继续按自己的逻辑判断
      

  8.   

    return在if里面不一定执行的到
    指不定哪个return会被执行 ,所以都要写
      

  9.   

    代码逻辑完全没有问题,加上注释如下:public boolean equals(Object otherObject){
          if (this==otherObject)            //比较this和otherObject的地址是否一样
                   return true;
             if (otherObject==null)         //判断otherObject是否为null     
                return false;
             if (this.getClass()!=otherObject.getClass())  //判断类型是否一样 
                return false;      //上面的判断已经将不是同一种类型的直接return false了,下面为何还要继续比较判断啊?(这个跟下面的代码完全没有冲突)
           //因为如果上面判断是同一类型,才需要进一步判断内容是否也一样,如下
            ComplexNumber other =(ComplexNumber)otherObject;  
             if (re==other.re && im==other.im)
              return true;
             else 
              return false;
       }
      

  10.   

    参数是object类型的   这个函数可以比较的不只是一种类型吧
      

  11.   

    必须传过来的是同一个类,否则false,必须传过来的不能是空的。如果地址相同了(是同一个对象),那就不比了 true。 接下来的情况就是 同一个类的两个对象在比较了,比较属性是否相等。
      

  12.   

    这个equals方法的作用就是重写Object类的equals方法,只有当2个对象的内容(就是re和im)相等时这2个对象才认为相等,这才是要比较的东西,而之前判断2个对象如果不是同一个类的,那肯定就不相等了,当2个对象都属于同一个类,这才有比较的价值。
      

  13.   

    equals用来判定值是否相等的  需要逐个判断成员变量