public class cacheDemo { public static void main(String[] args) { // Integer i1=100; // Integer i2=100; // System.out.println(i1==i2); // System.out.println(i1.equals(i2)); // Integer i3=200; // Integer i4=200; // System.out.println(i3==i4);//比较的是地址 // System.out.println(i3.equals(i4));//比较的是值 //以上代码通过反编译,底层使用的是valueof方法,等价于下面代码 Integer i1 = Integer.valueOf(100); Integer i2 = Integer.valueOf(100); System.out.println(i1 == i2);//true Integer i3 = Integer.valueOf(200); Integer i4 = Integer.valueOf(200); System.out.println(i3 == i4);//比较的是地址false } }
valueof源码:
可见,Integer类型只要数值在-128到127内,就会返回java为我们创建好的对象,这就叫做整数缓冲区,并不会new一个新的,因此100返回true,200返回false