Board logo

标题: 深入【Java】底层细节知识点(4)equals()和==的区别 [打印本页]

作者: look_w    时间: 2018-12-15 13:08     标题: 深入【Java】底层细节知识点(4)equals()和==的区别

eq
uals()==


他们最大的区别就是一个是方法,一个是关系操作符。
Object类中的equals方法源码:
public boolean equals(Object obj)   {       return this == obj;   }可见它直接比较的对象本身。
String类中的equals方法源码(重写Object中的):
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 != v2)                        return false;                i++;            }            return true;        }    }    return false;}上面的equals比较当中,都运用到了“==”,这就说明,equals(不管哪个类中的)是==的扩展。
引用《java编程思想》中的原话:
  关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系
总结:





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0