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

没有重构equals方法时,两个字符串对象的比较为何相等?

没有重构equals方法时,两个字符串对象的比较为何相等?

qq_杀意隆_0 2018-04-12 11:23:33
//没有重构equals方法。 //Cat.java public class Cat{} //Program.java public class Program{     public static void main(String[] args){         Cat cat1 = new Cat();         Cat cat2 = new Cat();         System.out.println(cat1.equals(cat2)); //false                  String s1 = new String();         String s2 = new String();         System.out.println(s1.equals(s2)); // 同样是对象,此处为何是true ?     } }
查看完整描述

3 回答

?
yanrun

TA贡献317条经验 获得超240个赞

看一下String的源码
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转换成字符串数组然后遍历比较

查看完整回答
反对 回复 2018-04-12
  • qq_杀意隆_0
    qq_杀意隆_0
    这是说String类重构了equals方法? java中还有其他类重构了equals方法吗?
  • yanrun
    yanrun
    很多吧,比如Integer,Double应该都重写了
  • 大咪
    大咪
    我又看到大表哥了...
点击展开后面1
  • 3 回答
  • 0 关注
  • 1375 浏览

添加回答

举报

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