区别:
- int是Java中的八大基本数据类型之一,Integer是int对应的包装类;
- int的默认值为0,Integer的默认值为null;
- Integer变量必须实例化后才能使用,而int变量不需要 ;
- Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值;
笔试题中常见的几种情况:
public class Test {
public static void main(String[] args) {
Integer i1=new Integer(100);
Integer i2=new Integer(100);
int i3=100;
Integer i4=100;
Integer i5=100;
Integer i6=128;
Integer i7=128;
System.out.println(i1==i2); //false 地址的引用不同
System.out.println(i1==i3); //true 只要值相等就相等,jdk5后的自动拆装箱
System.out.println(i1==i4); //false 前面指向的是堆中新建的对象,后面的指向的是Java常量池中的对象
System.out.println(i3==i4); //true 只要值相等就相等,jdk5后的自动拆装箱
System.out.println(i4==i5); //true 两个Integer对象在-128~127之间是相等的,
System.out.println(i6==i7); //false 在-128~127区间之外会重新创建对象
}
}