Integer中==踩坑记录

2019-09-11 00:42:39  卢浮宫  阅读量:235  版权声明:本文为站长原创文章,转载请写明出处


一、今天在使用Integer的==进行数据比对时发现

    Integer i = 366;

    Integer j = 366;

    i == j  返回false

二、查JDK API发现在Integer中有以下方法

public static Integer valueOf(int i) {
if (i >=
IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

其中IntegerCache是定义的缓存区域,当一个Integer数值在-128 到 127之间就会放在这个缓存区中,取值也是从这里取。

故而就有以下操作了

    Integer i = 366;

    Integer j = 366;

    i == j  返回false

    Integer m = 66;

    Integer n = 66;

    m == n  返回true

三、解决方案

    所以比较Integer还是要使用equals()

最新评论: