最近项目中遇到一个添加判重的问题,判重无效,一直找不到原因,于是查了一下equals的用法,感觉蒙蒙哒~~
添加数据判重,当判重到时间的时候时间都是"yyyy-MM-dd"这样的,但判重失败,查了一下,原来equals前后两个
比较时对象可以不一样,但数据类型必须得相同,Date类型的"2015-04-15"与String类型的"2015-04-15"着实不一样,想想也是。。。
以下就是equals和"=="之间的异同:
同:
如果没有重写新类的equals方法,则该方法和“==”操作符一样在两个变量指向同一对象时返回真。
但是java推荐的是使用equals()方法来判断两个对象的内容是否一样。
异:
equals()是Object类的一个方法,指示某个其他对象是否与此对象“相等”。
Object是类层次结构的根类,它是每个类的超类。每个类都可以重写equals()方法,Eg:String类。
引用类型比较引用;基本类型比较值。
equals()方法只能比较引用类型,"=="可以比较引用及基本类型。
使用equals()方法进行比较时,对类File、String、Date及封装类(Wrapper Class)来说,是比较类型及内容。
使用"=="进行比较时,符号两边的数据类型必须一致(可相互转换的基本类型除外),否则编译出错。
也就是说,如果比较对象和比较类型相同时,equals和“==”的效果相同,
而equals可以比较不同对象类型相同的内容,“==”比较的必须是同一对象统一地址统一数据类型的内容。