Java int 与integer的区别
int与integer的区别是基本数据类型与其包装类的区别:
int为基本数据类型,直接存数值,初始化为0,而integer是复杂数据类型,为对象,用一个引用指向这个对象,初始化为null。integer为int的封装类。
初始化:int i= 1;
Integer i= new Integer(1)
由于在java中有自动装箱和拆箱机制,简单的理解为将基本数据类型与对象数据类型的转化,由基本数据类型封装为对象数据类型为装箱,反之则为拆箱。
例如: Integer num = 10 被自动装箱为Integer num= new Integer(10)
而int num1 = num 则为自动拆箱。
由于对象不能直接进行运算,则在进行运算时,会有自动拆箱的过程。如num--;
但是java定义了自动装箱时针对-128到127之间的值,在被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象,对于超出此范围的值,被装箱后的Integer对象后不会被重用,即相当于每次装箱时都新建一个Integer对象。
例如:
Integer num1 = 297; Integer num2 = 297;
System.out.println("num1==num2:"+(num1==num2));
Integer num3 = 97; Integer num4 = 97;
System.out.println("num3==num4:"+(num3==num4));
打印的结果是:num1==num2: false num3==num4: true
在java中需要往ArrayList,HashMap中放东西时,像int,double这种内建类型(基本数据类型?)是放不进去的,因为容器都是装 object的,这是就需要这些内建类型的外覆类了。java的每种内建类型都有相应的外覆类。
例如: ArrayList array = new ArrayList();
int n =40;
Integer n1 = new Integer(n);
array.add(n);//错误
array.add(n1); // 正确
List<Integer> list = newArrayList<Integer>();//正确
List<int> list = newArrayList<int>();//错误
总结:定义一个int类型的基本数据类型,只是用来进行加减乘除的简单运算或者是作为参数传递。
定义一个integer来声明一个对象,是以对象来进行处理的,需要使用对象间的转化方式和方法。
参考资料:点击打开链接