美文网首页
==和equals有什么区别

==和equals有什么区别

作者: 蜗牛写java | 来源:发表于2021-07-26 23:43 被阅读0次
  • == 是栈中的值比较

    如果是基本类型来说,比较的是值是否相等;如果是引用类型,那么比较的就是对象引用地址是否相等(往往比较的是不是同一个堆中的对象)

    Object 源码中equals

    public boolean equals(Object obj) {
        return (this == obj);
    }
    
  • equals是逻辑内容上的比较;

    String 源码中equals

    public boolean equals(Object anObject) {
        // 对象引用相同直接返回 true
        if (this == anObject) {
            return true;
        }
        // 判断需要对比的值是否为 String 类型,如果不是则直接返回 false
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                // 把两个字符串都转换为 char 数组对比
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                // 循环比对两个字符串的每一个字符
                while (n-- != 0) {
                    // 如果其中有一个字符不相等就 true false,否则继续对比
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        //如果不是String类型,则直接返回false
        return false;
    }
    

相关文章

网友评论

      本文标题:==和equals有什么区别

      本文链接:https://www.haomeiwen.com/subject/vejnmltx.html