Java 基础 - 包装类valueOf()的缓存

总结

规律:

  • 通过自动装箱Integer i = 1 / Character c = 'p'、或者显示调用valueOf() ,如果在缓存中,就返回同一个对象
  • 如果不在,就new一个新对象返回

 

1.Integer.valueOf缓存范围是[-128,127]

  • 通过integer内部的private static class IntegerCache类的Integer cache[]来缓存
  • 缓存的最小值,不能改变,只能是-128
  • 缓存的最大值,可以通过-XX:AutoBoxCacheMax=<size>来改变。且只有大于127时,改变才有效;配置小于127无效。

 

2.Byte,Short,Long类型的缓存范围是[-128,127]

  • 每个包装类都有各自的缓存类ByteCache, ShortCache, LongCache
  • 缓存的上下限,不能改变

 

3.Character缓存[0,127]

  • 缓存类是CharacterCache
  • 缓存的上下限,不能改变

 

4.Double没有缓存,Double.valueOf()都是直接返回new Double (num);

 

5. Boolean缓存TRUE、FALSE, 并没有缓存类。

 

 

上一篇:java中int与Integer用==比较详解


下一篇:Java操作HbaseAPI大全(增删改查等操作)