int与integer的区别

来源:互联网 发布:java web文件服务器 编辑:程序博客网 时间:2024/06/14 14:58

Java intinteger的区别

intinteger的区别是基本数据类型其包装类的区别:

int为基本数据类型,直接存数值,初始化为0,而integer是复杂数据类型,为对象,用一个引用指向这个对象,初始化为nullintegerint的封装类。

初始化:int i= 1;

        Integer i= new Integer(1)

由于在java中有自动装箱和拆箱机制,简单的理解为将基本数据类型与对象数据类型的转化,由基本数据类型封装为对象数据类型为装箱,反之则为拆箱。

例如:Integer num = 10 被自动装箱为Integer num= new Integer(10)

      int num1 = num 则为自动拆箱。

由于对象不能直接进行运算,则在进行运算时,会有自动拆箱的过程。如num--;

 

但是java定义了自动装箱时针对-128127之间的值,在被装箱为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中需要往ArrayListHashMap中放东西时,像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来声明一个对象,是以对象来进行处理的,需要使用对象间的转化方式和方法。

参考资料:点击打开链接

0 0
原创粉丝点击