Integer是包装数据类型,而int是其对应的基本类型,同时也是八大基本类型中的一个 。
-
其中,Integer和int会涉及一个拆装箱,Integer到int会进行一个拆箱,int到Integer会进行一个装箱,得益于JDK5引入的自动拆装箱语法糖,而无需手动操作。
-
集合并不能存储诸于int的基本类型,只能存放Integer的包装类型,而由于拆/装箱看起来无异。
-
在使用上,int可以直接定义赋值、但Integer需要使用new关键字来创建对象。
-
在默认值上,因为Integer是一个对象,Integer的默认值为null、而int的默认值为0。
-
在内存上,Integer由于是一个对象,所以 存储在堆内存,int 类型是直接存储在栈空间。
-
在性能上,由于Integer包装了其他功能,性能要低于int。
-
在遍历上,由于Integer是对象,提供了更多的方法和工具类,便于操作。
-
在缓存上,在Integer中 -128到127之内值会被缓存起来,其中使用到了一个享元设计模式,int并没有缓存。
为什么要设计包装类型
首先java是一个面向对象的语言,为了体现一切皆对象的思想,而且对象还可以使用泛型来规范。
可以使用对象对象的一些特征,比如封装,安全性较好,可以对包装类型提供更多的操作方法。在集合中也只能支持对象。