您的位置:首页 > 其它

Integer缓存策略

2016-04-06 14:59 405 查看
一、测试类

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缓存中查找,超出范围后重新创建对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: