1.如果某个类没有对equals方法重写的话,equals默认和==相同。即使两个对象的内容相同,equals的结果也为false。如:
Cat c1=new Cat(1,2);
Cat c2=new Cat(1,2);
System.out.println(c1==c2);//false;
System.out.println(c1.equals(c2));//false;
2.String类和Date类对equals方法进行了重写,所以该类的equals是比较两个对象的内容是否相同。如:
String s1=new String("hello");
String s2=new Stirng ("hello");
System.out.println(s1==s2);//false;
System.out.println(s1.equals(s2));//true;
3.可以在某个类中重写equals方法。如:
class Cat{
int age;
int weight;
//构造方法
public Cat(int age,int weight) {
this.age=age;
this.weight=weight;
}
//重写equals方法
public boolean equals(Object obj){
if(obj==null){
return false;
}
if(obj instanceof Cat){
Cat c=(Cat)obj;
if(c.age==this.age && c.weight==this.weight ){
return true;
}
}
return false;
}
}