java基础—equals和==的区别

来源:互联网 发布:linux 源码安装lnmp 编辑:程序博客网 时间:2024/05/17 10:54

这是很多人的误区,认为==比较的是数值,equals比较的是字符串
= =:
基本类型比较值:只要两个变量的值相等,即为true.
引用类型比较引用(是否指向同一个对象):只有指向同一个对象时,==才返回true.
equals:
只能比较引用类型,其作用与“==”相同,比较是否指向同一个对象。
注意:当用equals()方法进行比较时,对类File、String、Date及包装类来说,是比较类型及内容而不考虑引用的是否是同一个对象;
原因:在这些类中重写了Object类的equals()方法。这就导致很多人以为equals就是比较的是内容。
举例:String源码里重写equals的地方:

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;    }
原创粉丝点击