Java 重写equals方法时,

1.public boolean equals(Object obj) {
if(this==obj)this指谁?麻烦说清楚具体点,都说当前,哪个当前?比如this.name=name这个this我知道是类中name属性;if(this==obj)obj是传进来的对象 this指谁??
2.a.equals(b);当a和b中一个值确定时,比如a确定了,a|||最好|||放在哪个位置??是a.equals(b)还是b.equals(a);为什么?

1, this指的就是 放 equals的类的当前对象
如 A类中有equals方法。 那this就指 当前的实例化A 即 new A();

2, a确定, 那就肯定要 a.equals(b), 这时候b可以是任意字符
如果是 b.equals, 那当b为null, 时, 就会空指针异常追问

有点不明白,那obj是类object中A的对象时,是不是说if(this==obj)等于if(obj==obj)?这个混混的,能解释下吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-28
  public boolean equals(Object obj) {
if(obj==null)
return false;
if(this == obj){
return true;
}
if (obj instanceof Person) {
Person other = (Person) obj;
return (p.name).equals(this.name);
}
return false;
}

  Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
第2个回答  推荐于2016-09-02
  重写equals方法的要求:
1.自反性:对于任何非空引用x,x.equals(x)应该返回true。
2.对称性:对于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true。
3.传递性:对于任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true。
4.一致性:如果x和y引用的对象没有发生变化,那么反复调用x.equals(y)应该返回同样的结果。
5.非空性:对于任意非空引用x,x.equals(null)应该返回false。
  方法格式:

  Java代码
  public boolean equals(Object obj) {
  if(this == obj)
  return false;
  if(obj == null)
  return false;
  if(getClass() != obj.getClass() )
  return false;
  MyClass other = (MyClass)obj;
  if(str1 == null) {
  if(obj.str1 != null) {
  return false;
  }
  }else if (!str1.equals(other.str1) )
  return false;
  }
  if(var1 != other.var1)
  return false;
  return true;
  }
  如果子类中增加了新特性,同时保留equals方法,这时比较复杂。