equals方法考察细节
class Animal{
String name;
public Animal(String name){
this.name = name;
}
}
String s1 = "cat";
Animal a = new Animal(s1);
Animal b = new Animal(s1);
System.out.println(a.name == b.name);//true
System.out.println(a==b);//false
System.out.println(a.equals(b));
//False,因为这里调用的是Animal的equals方法,没有重写,比较的仍然是a和b是否是同一个对象
String的equals方法底层是先判断是不是同一个对象(地址值),如果是则true。不是则再判断比较的对象是不是String类型,若不是则false,若是则再判断字符串内容是否相等,若相等则true,不相等则false
StringBuilder/StringBuffer的equals方法是直接使用的Object类的equals方法,底层是比较是否是同一对象,若是则true,不是则false