[项目bug收集整理1]Integer 对象的相等比较

某个ORM 实体类ClaasA含有域 Integer id.

比较两个类的该id是否相等,要用equals,而不能用==.

因为Integer的 == 比较,在-128~127之间,由于存在cache静态数据(具体可参见Integer的JDK实现源码,或Effective Java书中介绍),故会相等。

但如果不在该范围内比较,会不相等。

如果项目实现中出现了这种灵异现象,一会逻辑符合,一会逻辑不符合或者测试环境符合,线上出问题,没准就是这种 相等的坑。

一句话小结,==比较的是地址,equals比较的是内容。

 

 

posted @ 2013-11-05 11:04  akingseu  阅读(184)  评论(0编辑  收藏  举报