装箱:基本类型转变为包装器类型的过程。
拆箱:包装器类型转变为基本类型的过程。
以Integer为例分析自动装箱和拆箱的过程,先看一组代码
从源码来分析结果,Integer有value属性,类型为int,对于1处和4处会触发自动装箱,即执行valueof方法
由上源码可知装箱时当i>=-128,i<=IntegerCache.high(默认127)会自动从内部类IntegerCache的cache数组中拿取对象,超出这个范围则new对象,1处在返回内,会拿取同一缓存对象,4处不在范围内,会直接new对象,所以1处返回true,4处返回false,2处i是缓存对象,j是new,返回false.
3,5处是equals返回,Integer进行了重写,比较的是value
6处会进行拆箱,即调用intvalue返回基本类型