本文主要是介绍==和equals闲谈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一直以为==是比较引用,而equals是比较值,知道前不久才发现,其实==和equals都是比较引用是否相等。
Object类是所有类的超类,而在Object类中的equals是比较引用,但是我们在对两个String进行比较时,equals实际却是比较的值,而不是比较的引用,可以通过这个例子来看出,String的equals方法是比较值是否相等。
String str1 = new String("abc"); String str2 = "abc";
boolean b = str1.equals(str2);通过测试可以发现b是为true的。
按照常理说,他们两个并不是一个对象,并不像等,可是,为什么呢?因为String重写了Object的equals方法。并且,通过API查找String类,可以发现String的字面量是一个常量。由于String类型在内存中存放方式的特殊性,所以String类的equals方法是比较值。
和String类似的Date方法重写了equals方法,也是比较值相等。所以在使用equals的时候,要注意是否被重写了。
这篇关于==和equals闲谈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!