笔试题总结——包装类Integer的“天坑” 对于Integer包装类分为了两个部分 1、在-128——127之间的赋值,Integer对象在Integer常量池中产生,会复用已有对象,这个区间内的Integer值可以直接使用==判断。 2、除上面这种情况之外的所有数据,都会在堆上产生,并不会复用已有对象。 该代码的输出为(==比较的是地址) false(i1会自动装箱为一个包装类<new一个新的>,i2也是new的,所以地址不相同) true(i1自动装箱后由于值在-128——127,因此会被Java放在Integer常量池中,而i3再次赋值时会直接从常量池中取得<不用new了>,因此从与i1的地址就是相同的) false(i4自动装箱后为一个包装类<没在-128——127之间>,i5也就会直接new一个新的Integer了,因此两者地址不相同)