0
点赞
收藏
分享

微信扫一扫

案例09-数据类型不一致导致equals判断为false


一、背景介绍

前端传过来的id与在库里边查出来的id进行对比,如果一致就更新当前的这条记录,如果不一致就插入一条记录,但是在后端判断是否一致的时候,没有将前端传过来的数据和数据库中的数据类型并不一致,但是也进行了比较,导致数据发生了混乱。

案例09-数据类型不一致导致equals判断为false_数据

代码如下:

案例09-数据类型不一致导致equals判断为false_开发语言_02

二、思路&方案

思考为什么会出现重复插入数据的问题
使用demo查看equals具体实现思路和结果

三、过程

编码:

案例09-数据类型不一致导致equals判断为false_java_03


从结果来看当数据类型不一致的时候,判断的结果是false。

案例09-数据类型不一致导致equals判断为false_包装类_04


下面来看equals的具体实现原理首先查看Object类中的equals方法

比较的是对象的地址

案例09-数据类型不一致导致equals判断为false_开发语言_05

然后查看包装类中重写的equals方法

显然是比较内容的

案例09-数据类型不一致导致equals判断为false_数据_06

四、总结

1.equals方法如果没有进行重写操作的话去比较两个对象的地址,只有对象地址一致才返回true。

2.我们可以非常清晰的看到String的equals()方法是进行内容比较,而不是单纯的引用比较。

五、升华

我们平时在调用String、Integer等包装类型时的equals方法时是比较的内容是否一致而不是地址一是否致,如果是地址一致,那所有的String类型比较都是相等的,所以包装类类型都重写了equals方法。我们可以根据业务场景的不同来选择是否重写equals方法。


举报

相关推荐

0 条评论