在Java中,所有类都继承Object类,Object类中的Equals方法比较的是两个对象的引用地址,并非对象的值。
而String类中的Equals方法比较特殊,比较的是两个对象的值,这是因为在String类中对Object类中的Equals方法进行了重写。
也就是说,如果想要比较自己造的类中对象的值,就必须在当前类中对Equals方法进行重写。如果不重写,则程序会自动调用Object类中的Equals方法,比较的是两个对象的地址。
附重写代码:
//目的:测试B类中的Equals方法
public class TestEquals {
public static void main(String[] args) {
B b1 = new B(30);
B b2 = new B(30);
System.out.println(b1.Equals(b2)); } }
//创建一个B类
public class B {
int b1;
//B类的构造方法进行重载,便于传参
public B(int i){
this.b1=i;
}
//重写Equals方法
public boolean Equals(B b2 ){
if(b1==b2.b1){
return true;
}else{
return false;
}
}
}
//新建一个TestEquals类
运行之后发现结果变为True,说明我们对Object类中的Equals方法重写成功