JAVA Integer值比较问题

版权声明:本文为博主九师兄(QQ群:spark源代码 198279782 欢迎来探讨技术)原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21383435/article/details/81779168

今天项目中很多地方用Integer比较
实体类中

private Integer entityId;

然后比较

basEntityInDb.getEntityId() == basEntityLineage.getEntityId()

发现明明相等,但是最后不相等

java中Integer类型对于-128-127之间的数是缓冲区取的,所以用等号比较是一致的。但对于不在这区间的数字是在堆中new出来的。所以地址空间不一样,也就不相等。

所以,以后碰到Integer比较值是否相等需要用intValue()

basEntityInDb.getEntityId().intValue() == basEntityLineage.getEntityId().intValue()

Double没有缓冲区。

总结:
java对象比较是地址比较,地址相同,对象才相同,基本类型是值比较,比较的数值

猜你喜欢

转载自blog.csdn.net/qq_21383435/article/details/81779168