Java----基础(装箱/拆箱)缓存池
前言
- 最近正在准备面试,需要复习一下基础的东西
- 参考资料,这篇博客讲的不错
概念
就是java中基本数据类型跟包装类型之间的自动转换
基本类型----->包装类型(自动装箱)
包装类型----->基本类型(自动拆箱)
基本类型跟包装类型
- 八大基本类型:byte,char,short,int,long,double,float,boolean
- 相对应的包装类型:Byte,Char,Short,Integer,Long,Double,Float,Boolean
如何实现呢?
- 反编译class文件: javap -c 类名
- 发现装箱是通过 方法**Integer.valueOf(x)**来实现装箱
- 发现拆箱是通过 方法**Integer.intValue()**来显示拆箱
面试
-
前面讲了这么多,面试中会出什么题目呢?
-
不多BB直接上代码
public class TestBox { public static void main(String[] args) { Integer i = 128; int j = 128; System.out.println(i==j); //true System.out.println(i.equals(j)); //true } } -
上面讲了这么多,其实都不是很核心的地方,核心的地方是valueOf()

可以看到 这个 区间是[-128,127]
-
注意:最大值 127 可以通过 JVM 的启动参数 -XX:AutoBoxCacheMax=size 修改
-
面试题
public class TestBox { public static void main(String[] args) { Integer a = 3; Integer b = 3; Integer c = 128; Integer d = 128; Integer i = 1; Integer j = 2; System.out.println(a==b);//true System.out.println(c==d);//false System.out.println(a==(i+j)); //true System.out.println((a+c)==(b+d));//true } }
总结
- 了解装箱(valueOf(xxx))跟拆箱(xxx.intValue())
- 了解缓存区(缓存池)
- 面试中的要点