1、Integer是int提供的封装类,而int是Java的基本数据类型
2、Integer默认值是null,而int默认值是0;
3、声明为Integer的变量需要实例化,而声明为int的变量是不需要实例化的
4、Integer是对象,用一个引用指向这个对象,而int是基本类型,直接存储数值
(原始类型:boolean, char , byte , short , int ,long , float , double
封装类型:Boolean, Character, Byte, Short , Integer, Long, Float, Double)
java 中的基本数据类型只有以上8个,除了基本类型,剩下的都是引用类型。
5、无论如何,Integer与new Integer不会相等,不会经历拆箱过程,new出来的对象存放在堆中,非new的Integer常量则放在常量池(方法区),他们的内存地址不一样,所以为false。
6、两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false。因为Java在编译Integer i2=128的时候,被翻译成:Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存
7、两个都是new出来的,都是false,还是内存地址不一样
8、int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int 再去比。
所以对于Integer的判断用equals()比较