关于Integer的一些知识

来源:互联网 发布:富图宝 知乎 编辑:程序博客网 时间:2024/06/14 03:48

关于Integer的一些知识

昨天有人问我关于Integer包装类直接赋值的问题,经过查证,以new方式生成Integer对象时一定分配了空间给这个对象,但直接赋值如:Integer = 100时,当这个值在-128到127之间时,不会生成新的对象,当不在该范围内时会生成新的对象
以下是Integer.valueof(int x)的源码

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

当I在范围内时,返回的是IntegerCache.cache[i + (-IntegerCache.low)];

Integer将所有在范围内的数存在了一个对象当中。

这个结论同样可以用来解释Integer大小比较出现的奇怪现象

原创粉丝点击