默认的equals()方法只有等两个引用都是引用同一个对象的时候才是true,一般情况下我要使用这个方法就得覆盖了那个Object类的equals()方法。默认情况下:MyClass m = new MyClass(); MyClass b = m; System.out.println(m.equals(b));这时候是ture. 也就是this==obj;覆盖了这个方法和自定义相等条件一样。比如说有个类Person,有一个name属性,我们可以写自己的相等条件,也就是如果比较的对象和name和当前的对象的name一样的时候就认为这两个对象相等。Person { String name ; public boolean equals(Object obj) { //判断obj是不是Person对象,如果不是的话就没有比较的意义了。如果你非要比较也是可以的。//然后用this.name和((Person)obj).getName();比如,如果相同就返回true,不相同就返回false return this.getName().equals(((Person)obj).getName();) } }从中看错equals的原理:自定义比较的规则。Object类里的equals()方法只是简单的比较一个是否引用自对一个对象。
把prouser打出来看看
MyClass b = m;
System.out.println(m.equals(b));这时候是ture.
也就是this==obj;覆盖了这个方法和自定义相等条件一样。比如说有个类Person,有一个name属性,我们可以写自己的相等条件,也就是如果比较的对象和name和当前的对象的name一样的时候就认为这两个对象相等。Person
{
String name ;
public boolean equals(Object obj)
{
//判断obj是不是Person对象,如果不是的话就没有比较的意义了。如果你非要比较也是可以的。//然后用this.name和((Person)obj).getName();比如,如果相同就返回true,不相同就返回false
return this.getName().equals(((Person)obj).getName();)
}
}从中看错equals的原理:自定义比较的规则。Object类里的equals()方法只是简单的比较一个是否引用自对一个对象。
重写了的话要看类的具体行为,比如说String类。