Java中int和Integer的区别是什么?
代码
package Test;
public class Equals {
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer i1=127,i2=127,i3=128,i4=128;
System.out.println(i1==i2);
System.out.println(i1.equals(i2));
System.out.println(i3==i4);
System.out.println(i3.equals(i4));
}
}
结果
小结
Java中int和Integer关系是比较微妙的。关系如下:
1,int是基本的数据类型;
2,nteger是int的封装类;
3,int和Integer都可以表示某一个数值;
4,int和Integer不能够互用,因为他们两种不同的数据类型;
5,Integer类的内部, 有一个常量静态数组, 在Integer类被加载的时候, 预先创建了-128 ~ 127的Integer对象, 所以当声明的Integer类型变量的值在-128 ~ 127的范围内时, 不会新创建对象, 直接引用数组中创建好的. 所以第一个结果会输出true,第三个结果为false;
6,而int是一个基本数据类型,不存在integer那样的创建对象的过程,只要数值不超过-2……31~2^31-1(对于32位的编译器来说),编译器就不会报错,所以第二个和第四个结果都是ture.