int和Integer有什么区别
- int是Java基本数据类型,Integer是int的包装类。
- int的声明不需要实例化,且变量声明后的初始值为0;Integer的是一个类,初始值为null,需要进行实例化,才能对变量数据进行处理。
什么是包装类
Java是面向对象的编程语言,而Java中的八种基本数据类型不是面向对象的,为了解决这一问题,Java给这八种基本数据类型定义了包装类。它们分别是:
序号 | 基本类型 | 默认值 | 包装类 | 父类 | 默认值 |
---|---|---|---|---|---|
1 | boolean | false | Boolean | java.lang.Object | null |
2 | char | '\u0000' | Character | java.lang.Object | null |
3 | byte | 0 | Byte | java.lang.Number | null |
4 | short | 0 | Short | java.lang.Number | null |
5 | long | 0L | Long | java.lang.Number | null |
6 | int | 0 | Integer | java.lang.Number | null |
7 | float | 0.0f | Float | java.lang.Number | null |
8 | double | 0.0d | Double | java.lang.Number | null |
从上面的表格中我们不难发现Java中的包装类除了Integer和Character其他的包装类都是将基本类型的首字母的小写改为大写字母。
再就是包装类的默认值都是null,这与Java的对象默认值保持一致。
包装类的作用
- 包装类可以定义泛型参数,而基本类型不行。
- 包装类可以返回NULL值,方便我们对对象的的统一操作。
- 包装类继承了Serializable空接口,可以实现序列化和反序列化。
- 包装类包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
以上,我们在定义类的成员变量或者属性时,需要将它们定义为Java的包装类这样可以更好的操作对象和序列化。
装箱与拆箱概念
装箱:把基本数据类型转换成包装类。
//自动装箱
int a1=10;
Integer a2=a1;
//手动装箱
Integer a3=new Integer(a2);
拆箱:把包装类转换成基本数据类型。//自动拆箱
int a4=a2;//a2是上面的Integer a2=a1;
//手动拆箱
int a5=a2.intValue();
注意:自动装箱就是自动的将java基本类型转为对应的包装类,而不是new一个对象;自动拆箱就是自动的将java包装类转为对应的基本类型,而不是使用包装类的intValue()方法。