Java基本类型的包装类的大部分都实现了常量池技术。
Byte、Short、Integer、Long、这4种包装类默认创建了[-128,127]的相应类型的缓存数据,Character创建了[0,127]范围的缓存数据
Integer i1 = new Integer(20);
Integer i2 = 20;
System.out.println(i1 == i2);
上面这段代码就是一个典型的例子,Integer i2 = 20;就是使用的常量池中的对象,而Integer i1 = new Integer(20);就是直接在堆中创建了一个新的对象,所以我们直接比较地址就是false
Integer i1 = 200;
Integer i2 = 200;
System.out.println(i1 == i2);
上面这段代码就是解释了缓存的区间问题,当超过127时,就是各自创建了一个新的对象,自然也就是不一样的了