String s1=new String("abc");和String s2=new String("abc"); 它们的s1.equals(s2)是true 而自定义class compare{int a=3;}compare c1=new compare();和compare c2=new compare() 它们的c1.equals(c2)是flase这是为什么?
1 回答
已采纳
xczzxc002
TA贡献24条经验 获得超19个赞
String 对象的equals方法默认比较的是两个字符串的值是否相等;两个字符串的值相等,所以是true
对象实例的equals方法默认比较的是两个对象的引用地址是否相等,因为这是两个对象实例,代表了不同引用地址,所以是false
延伸:所有的类都有一个顶级父类Object,你的Compare类的equals方法是从Object类中继承下来的,你可以重写equals方法,来重新定义两个类判定相等条件,这样就不会默认的判断引用地址的值了
添加回答
举报
0/150
提交
取消