一、int是java中的基本数据类型,而Integer是int的包装类java
二、Integer变量必须实例化以后才能使用,而int则不须要对象
三、Integer实际是对象的引用,而int是直接存储数据值blog
四、Integer的默认值是null,int的默认值是0内存
实例:class
package com.lsj.test; public class test { public static void main(String[] args) { Integer a=new Integer(100); Integer b=new Integer(100); Integer c=100; Integer i=100; Integer j=128; Integer k=128; int d=100; System.out.println(a==b); System.out.println(a==c); System.out.println(a==d);
System.out.println(c==d); System.out.println(c==i); System.out.println(j==k); } }
运行结果:test
1.false
2.false
3.true
4.true
5.true
6.false
分析:一、Integer实际是对对象的引用,new生成两个Integer变量,因为内存地址不一样,故始终不会相等,即结果为false;变量
二、不是经过new生成的Integer变量和经过new生成的Integer变量进行比较时,结果为false,由于非new生成的Integer变量会存放在常量池中,而经过new建立的Integer变量会存放在堆中。数据类型
三、int变量和Integer变量比较,其实是值的比较,只要两个值相等,结果就为true。由于此时java会自动拆包装为int。引用
四、同上述3的分析同样数据
五、对于两个非new生成的Integer对象时,只要两个变量的值在-128和127区间内,且值相等的话,结果就为true。换句话说,只要二者值不在-128-127区间以内,结果均为false。
六、见上述5