一句话:int是基本数据类型,Integer是类。
详细:
- 由于是对象,Integer默认值是null,而int是0;Integer需要实例化才能使用,int可以直接使用。
- Integer是int的包装类。再integer与int类型直接比较的时候系统会自动做些动作方便使用(比如自动对Integer解析成int再比较)。
一些案例帮助理解:
Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false,引用类型比较
Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true,Integer会自动解析成int再比较
Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false,前者指向堆内存中的对象,后者指向java常量池中的对象
Integer i = 128; // 相当于Integer i = Integer.valueOf(128),-128到127会被缓存,超过范围则会new
Integer j = 128;
System.out.print(i == j); //falseInteger i = 100;
Integer j = 100;
System.out.print(i == j); //true,因为被缓存,实际上对应常量池中同一个对象
参考文章:
int与Integer区别
网友评论