1.==和equals()的比较对象不同
通俗来看,==比较的是地址,equals比较的是“长得一不一样”
一个简单的例子就是String a = "Abc",如果用==比较“abc”和a.toLowcase(),即将字符串a转换为小写表示(abc)会不相等,而用equals比较则相等,原因在于“abc”在字符串常量池内,和a.toLowcase转换的到的字符串不属于同一个地址。
2.equals在更多函数中被默认使用
如contains()检测一个集合内是否又目标元素,调用的就是equals,即比较“长得像不像”
3.equals的来源
equals被Object类定义,在Object中实现的缺省的equals()是在判断引用等价性(即使用==来判断地址)
4.在ADT中的使用
在ADT中,程序员(我们)通常只希望比较两对象长的一不一样,如果不对equals方法重写的话,调用的还是Object中的父类方法。根据ADT创建对象的行为与属性,我们应该重写equals()方法。