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

java中String类中的这个boolean equals(Object obj),为什么括号里写Object,而不是String。

java中String类中的这个boolean equals(Object obj),为什么括号里写Object,而不是String。

qq_慕婉清9181605 2019-06-13 18:38:40
是因为重写了父类的方法吗
查看完整描述

3 回答

?
逆光之羽

TA贡献55条经验 获得超13个赞

看了下源码 传入参数为anObject,里面一个判断是 this == anObject 应该是只有内存地址相关才会为true

另个一个anObject instanceof String,直接指定了判断类型是否为String

以上似乎只有传入参数类型为String才会进行判断 其他情况都是直接return false

所以个人理解入参写成Object类型只是写通用化模块的编码习惯的问题

public boolean equals(Object anObject) {
    if (this == anObject) {    //如果内存地址相同
        return true;
    }
    if (anObject instanceof String) {        //如果是String类型实例
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = offset;
        int j = anotherString.offset;
        while (n-- != 0) {
            if (v1[i++] != v2[j++])
            return false;
        }
        return true;
        }
    }
    return false;
 }

查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 965 浏览

添加回答

举报

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