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

java中的equals方法问题

java中的equals方法问题

微笑听雨 2016-09-19 15:34:35
为什么java中的equals方法可以访问其他对象的私有域
查看完整描述

3 回答

?
JFSL

TA贡献5条经验 获得超0个赞

一般默认情况下都是默认对比两个对象的地址(String对象除外,String中的equals方法重写了,改成了对比字符串),自己也可以重写,但必须遵循规则。

查看完整回答
反对 回复 2016-09-20
?
四无小青年

TA贡献88条经验 获得超43个赞

不知道你所说的equals()访问私有域是在哪看到的,在java中如果是普通对象,那它的equals()只是单纯的使用==来比较的。

 //这是jdk1.7中的源码
 public boolean equals(Object obj) {
        return (this == obj);
    }

而字符串的equals()也没有你所说的访问私有域

//这是jdk1.7中的源码
 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;
    }

望采纳

查看完整回答
反对 回复 2016-09-19
?
纷飞无悔3342058

TA贡献4条经验 获得超0个赞

equals比较的是字符的hashcode()值,平常我们比较相同的时候一般都是重写equals方法的。我不清楚你说的私有域是什么意思,大概是private所修饰的吧,想访问可以通过反射来访问,反射很强大的!

查看完整回答
反对 回复 2016-09-19
  • 3 回答
  • 0 关注
  • 1525 浏览

添加回答

举报

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