Integer缓存策略

来源:互联网 发布:动态相册软件 编辑:程序博客网 时间:2024/05/01 05:07

一、测试类

public class TestInteger {public static void main(String[] args) {Integer t1 = 3;Integer t2 = Integer.valueOf(3);System.out.println(t1==t2);//true//-127到128之间Integer t3 = 300;Integer t4 = 300;System.out.println(t3==t4);//false}}

为什么是这个结果,按理说2个都是true.

看源码:

Integer.class

 public static Integer valueOf(int i) {final int offset = 128;if (i >= -128 && i <= 127) { // must cache     return IntegerCache.cache[i + offset];}        return new Integer(i);    }
//在创建新的 Integer 对象之前会先在 IntegerCache.cache 中查找。有一个专门的 Java 类来负责 Integer 的缓存。

当数字在-128到127范围之间时,之间在IntegerCache缓存中查找,超出范围后重新创建对象。

0 0