1、int与integer最大的区别就是int是基本的数据类型,integer是封装的对象
2、我们看一个例子,我们看到,integer对象可以直接通过int赋值,这个过程称为装箱
3、再看一下输出,发现integer对象与int比较时结果为true,这个过程称为拆箱
4、在继续看例子,我们新创建了一个integer对象,在把这个对象与之前的值比较
5、看一下结果,前两个都是拆箱,所以为true,第三个因为是不同的引用,所以false
6、继续扩展,看一下下面的例子,是不是第一眼看上去都是false呢
7、看一下结果,第一个为true,第二个为false,为什么呢,需要解答这个问题,我们就要了解一下装箱的本质
8、当我们给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,我们看一下Integer的valueOf源码
9、只要int值在IntegerCache.low与IntegerCache.high之间,就直接从缓存取值,那这两个值是多少呢,我们看一下IntegerCache
10、发现值是-128到127,也就是说当值在-128到127时,其实引用指向的同一地址引用,所以上面的结果也就可以解释了