Java 进阶 (三十五)java int 与 Integer 的区别
一、前言
int
与 Integer
的区别从大的方面来说就是基本数据类型与其包装类的区别。 int
是基本类型,直接存数值,而Integer
是对象,用一个引用指向这个对象。
int
是基本数据类型,而 Integer
是复杂数据类型(也就是一个类);因此在类进行初始化时 int 类的变量初始为 0。而Integer
的变量则初始化为 null。
int 是基本数据类型(面向过程留下的痕迹,不过是对 java 的有益补充),Integer 是一个类,是 int 的扩展,定义了很多的转换方法。
类似的还有:float Float;double Double;boolean Boolean
等,而且还提供了处理 int 类型时非常有用的其他一些常量和方法。
举个例子:当需要往ArrayList
,HashMap
中放东西时,像 int,double 这种内建类型是放不进去的,因为容器都是装 object 的,这是就需要这些内建类型的外覆类了。
Java
中每种内建类型都有相应的外覆类。
Java
中int
和Integer
关系是比较微妙的。关系如下:
int
是基本数据类型;Integer
是 int 的封装类;int
和Integer
都可以表示某一个数值;int
和Integer
不能够互用,因为他们两种不同的数据类型;
举例说明
并且泛型定义时也不支持 int: 如:List<Integer> list = new ArrayList<Integer>();
可以, 而List<int> list = new ArrayList<int>();
则不行。
总而言之:如果我们定义一个 int 类型的数,只是用来进行一些加减乘除的运算 or 作为参数进行传递,那么就可以直接声明为 int 基本数据类型,但如果要像对象一样来进行处理,那么就要用 Integer 来声明一个对象,因为java
是面向对象的语言,因此当声明为对象时能够提供很多对象间转换的方式与一些常用的方法。自认为 java 作为一门面向对象的语言,我们在声明一个变量时最好声明为对象格式,这样更有利于你对面向对象的理解。
二、基本类型与包装类型的异同
在
Java
中,一切皆对象,但八大基本类型(char,byte,int,double,float,short,long,boolean
)却不是对象。声明方式的不同,基本类型无需通过 new 关键字来创建,而封装类型需 new 关键字。
存储方式及位置的不同,基本类型是直接存储变量的值保存在堆栈中能高效的存取,封装类型需要通过引用指向实例,具体的实例保存在堆中。
初始值的不同,封装类型的初始值为
null
,基本类型的的初始值视具体的类型而定,比如 int 类型的初始值为 0(整数:包括int,short,byte,long
,初始值为 0),boolean 类型为 false,浮点型:float,double ,初始值为 0.0,字符:char ,初始值为空格,即'' ",如果输出,在 Console 上是看不到效果的。使用方式的不同,比如与集合类合作使用时只能使用包装类型。
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/fc9809470e5ddc5e6d971e03f】。文章转载请联系作者。
评论