// 基本数据类型的 autoboxing 过程 产生的对象
public static void main(String[] args) {
Integer first = new Integer(3); // 指定new 一个对象
Integer second = 3; // 隐式自动包装
int three = 3; // 基本数据类型
Integer four = 3; // 隐式自动包装
Integer five = 128; // 隐式自动包装
Integer six = 128; // 隐式自动包装
int seven = 128;
//first可以从cache读取,但是代码明确指明 new Intger()
System.out.println(first == second);
System.out.println(first == three);//自动包装时从cache读取
//自动包装时,没有越过上下限,因此直接从cache读取
System.out.println(second == four);
System.out.println(five == six);//自动包装时,128>h=128;,所以会重新new Integer
//自动包装时,是new 还是从cache中取值, Integer与int的==,比较的均为值
System.out.println(six == seven);
}
if 判断 数值是否越过IntegerCache范围
在其内,直接返回cache,否则new Integer对象
下图是 Integer类内的 私有静态类 IntegerCache