黑马程序员技术交流社区

标题: equals与== [打印本页]

作者: zhujiu1    时间: 2019-9-19 13:43
标题: equals与==
一般对象使用equals这个方法用的都是Object类的方法。
具体实现为:
public boolean equals(Object obj) {
    return (this == obj);
}
其本质还是比较地址,StringBuilder对象使用的就是Object中的这个方法。所以结果为false
String类中则重写了equals方法。所以结果为true
具体实现为:
public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {//判断该对象是否是String类型对象
        String aString = (String)anObject;//向下转型
        if (coder() == aString.coder()) {
            return isLatin1() ? StringLatin1.equals(value, aString.value)
                              : StringUTF16.equals(value, aString.value);
        }
    }
    return false;
}
总结:==对于基本类型来说是值比较,对于引用类型来说比较的则是地址引用。而 equals默认情况下是引用比较,只是很多类重写了equals方法,例如String,Integer等把它变成了值比较!所以一般情况下equals比较的是值相等,但是前提是必须重写了equals方法!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2