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缓存中查找,超出范围后重新创建对象。
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缓存中查找,超出范围后重新创建对象。
相关文章推荐
- 抽象类与抽象函数
- POI操作EXCEL--源自技术
- Caffe学习系列(6):Blob,Layer and Net以及对应配置文件的编写
- Linux nslookup命令
- 奇异值分解
- CADisplayLink结合UIBezierPath的神奇妙用
- Socket通信原理和实战
- Virtual-Key Codes(虚拟键码)
- faac简介、编译、使用
- webhdfs 使用shell下载文件
- FluentData微型ORM
- jquery 轮播图
- 面试题46 求1+2+3+...+n
- 函数
- 黑客工具总结
- #java读书笔记#集合框架1
- 【Python Oracle】使用cx_Oracle 连接oracle的简单介绍
- Linux下web目录权限设置
- Caffe学习系列(5):其它常用层及参数
- View加载详解(一)