java里的equals(Objcet obj)方法不是可以比较两个对象里的内容吗?为什么这样会是false?
class A
{
int i =0;
public void hello()
{
System.out.println("hello");
}
}
class My
{
public static void main(String[] args)
{
A a = new A();
A b = new A();
boolean bool;
bool = a.equals(b);
System.out.println(bool);
}
}
为什么打印出来的却是false呢?
引用a,b 的内容是完全一样的呀?
请您指点!
参考答案:默认的equals 是比较引用的,即比较对象的内存地址
只有这样才能相等
A a = new A();
A b = a;
a.equals(b);
如果你要比较对象具体属性的值需要重写 equals 方法
class A
{
int i =0;
public void hello()
{
System.out.println("hello");
}
public boolean equals(Object obj){
if(!getClass().equals(obj.getClass())){
return false;
}
A other = (A)obj;
return this.i == other.i;
}
}
这样就可以得出你所要的结果了