-
缓存策略__仅在自动装箱时使用__(例如 Integer a = 1;),使用构造器构建时无效(例如 Integer b = new Integer(1);)
-
以Integer为例,Integer a = 1; 对应的实际过程为 Integer a = Integer.valueOf(1);查看源码可以发现调用 valueOf 函数时,首先检查Integer的私有静态类IntegerCache,这个类在加载的时候会将 [-128,127]的整数保存在 cache 数组中;如果自动装箱了一个在[-128,127]范围内的数字,那么直接使用cache中包含的实例对象;如果不在这一范围内,那么就 new 一个新的Integer实例
-
下限-128是固定值,但是上限 127 可以通过启动参数修改
-
不光是Integer类,Boolean、Byte、Character、Short、Long在__自动装箱__时都有缓存,而Float、Double没有
-
除了 Integer的缓存上限可变外,其他几种都是固定范围
Boolean true/false Charater [0,127] Byte [-128,127] Short [-128,127] Long [-128,127] Integer [-128,可变] (默认为 [-128,127])
2_Java自动装箱的缓存策略
最新推荐文章于 2021-04-01 10:04:14 发布