猿问
java中的equals方法问题
为什么java中的equals方法可以访问其他对象的私有域
微笑听雨
浏览 1526
回答 3
3回答
JFSL
一般默认情况下都是默认对比两个对象的地址(String对象除外,String中的equals方法重写了,改成了对比字符串),自己也可以重写,但必须遵循规则。
0
0
0
四无小青年
不知道你所说的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; }望采纳
0
0
0
纷飞无悔3342058
equals比较的是字符的hashcode()值,平常我们比较相同的时候一般都是重写equals方法的。我不清楚你说的私有域是什么意思,大概是private所修饰的吧,想访问可以通过反射来访问,反射很强大的!
0
0
0
随时随地看视频
慕课网APP
相关分类
Android
Java
我要回答