为了账号安全,请及时绑定邮箱和手机立即绑定

为什么用equals比较String的对象就相同,比较两个自定义类的对象就不相同

为什么用equals比较String的对象就相同,比较两个自定义类的对象就不相同

Arrivederc深蓝 2016-01-27 10:56:37
比如Dog是我定义的一个类。String a =  new String();        String b =  new String();用a.equals(b)返回的是true。Dog c = new Dog();Dog d = new Dog();用c.equals(d)返回的是false。请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。
查看完整描述

2 回答

已采纳
?
geelylucky

TA贡献3条经验 获得超3个赞

String重写过equal方法~~

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String) anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                        return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

另外Dog这个自定义类。

如果重写了Dog的equal也可以达到相同效果。

再延伸下去就是如果你要把Dog放到Set集合里。还需要重写hashcode

即重写Dog的hashcode和equal方法来判断重复。

具体为什么要重写hashcode和equal。

step1.请先自己思考一下。

step2.然后去网上搜索一下。

step3.结合起来总结。


希望你能把step3的输出写到这个帖子里,让更多的朋友看到。来share一下。


查看完整回答
1 反对 回复 2016-01-28
?
Caballarii

TA贡献1123条经验 获得超629个赞

你需要在自定义类里面重写equals方法,方法里面判断什么情况下返回true,比如判断Dog里的属性是不是相等

查看完整回答
反对 回复 2016-01-28
  • 2 回答
  • 0 关注
  • 1569 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信