今天发现了一个奇怪的问题
Integer allRightsTotal=140;
Integer allRightsLastTotal=140;
if(allRightsTotal!=allRightsInit){
msg = "第" + (i + 1) + "条数据中:权益初始值与全 部服务类型累加的权益值不相等";
msgList.add(msg);
failCount += 1;
continue;
}
debug看到两个Integer类型的值明明都是140,而判断不相等返回的是true则进入了方法,后面思考了一下又去百度验证了一下。
最后得出的结论是: 对于Integer值比较有范围规定 Integer 类型的值在[-128,127] 期间,Integer 用 “==”是可以的。 在-128<=i<=127的时候是直接用的int原始数据类型,而超出了这个范围则是new了一个对象,我们知道"=="符号在比较对象的时候是比较的内存地址,而对于原始数据类型是直接比对的数据值。
Integer值判断是否相等问题
最新推荐文章于 2024-08-03 10:17:57 发布