本帖最后由 caixingke 于 2014-8-26 10:09 编辑
如有疑问, 应当先查下源代码啊.
String类中的equals(Object):boolean方法的源码如下:- 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;
- }
复制代码 我们可以看到, 如果传向的对象类型不是String的话, 直接返回false
楼上一些说法是不准确的.
如果愿意的话, 我们也可以让传进行的StringBuffer对象返回true的.
当然, 既然JAVA官方认为这不同类型的对象进行equals判断时, 应当返回false, 那我们也遵守这个规则吧.
|