如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。如果再问一下其他的,估计更多的人会头脑一片混乱。所以我对它们进行了总结,希望对大家有帮助。
1.int与Integer、new Integer
int k=12;
Integer k1=12;
Integer k2 = new Integer(12);
System.out.println((k==k1)+"结果为true:integer会进行拆箱为int");
System.out.println((k==k2)+"结果为true:integer会进行拆箱为int");
2.Integer 和 Integer
Integer g1=127;
Integer g2=127;
System.out.println((g1==g2)+"结果为true");
Integer g3=128;
Integer g4=128;
System.out.println((g3==g4)+"结果为false");
/*
* 这里是个重点,g1、g2结果为true,Integer不在拆箱,代码经过编译为Integer.valueOf(i),
* 因为第一个integer会将值写入缓存池,
* 在声明一个一样的会在缓存中直接取,
* 所以为true。
* 而超过-128---127的范围会开辟新的内存。
*/
3.其他
integer 和new integer 不会为true,前者在缓存中,后者在堆中,内存地址不一样
new integer和new integer 内存地址不一样。