int和Integer有什么区别

  • int是Java基本数据类型,Integer是int的包装类。
  • int的声明不需要实例化,且变量声明后的初始值为0;Integer的是一个类,初始值为null,需要进行实例化,才能对变量数据进行处理。

什么是包装类

Java是面向对象的编程语言,而Java中的八种基本数据类型不是面向对象的,为了解决这一问题,Java给这八种基本数据类型定义了包装类。它们分别是:

序号基本类型默认值包装类父类默认值
1boolean
falseBoolean
java.lang.Object
null
2char'\u0000'Character
java.lang.Object
null
3byte0Bytejava.lang.Number
null
4short0Shortjava.lang.Number
null
5long0LLongjava.lang.Number
null
6int0Integer
java.lang.Number
null
7float0.0fFloat
java.lang.Number
null
8double
0.0dDouble
java.lang.Number
null

从上面的表格中我们不难发现Java中的包装类除了Integer和Character其他的包装类都是将基本类型的首字母的小写改为大写字母。

再就是包装类的默认值都是null,这与Java的对象默认值保持一致。

包装类的作用

  1. 包装类可以定义泛型参数,而基本类型不行。
  2. 包装类可以返回NULL值,方便我们对对象的的统一操作。
  3. 包装类继承了Serializable空接口,可以实现序列化和反序列化。
  4. 包装类包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

以上,我们在定义类的成员变量或者属性时,需要将它们定义为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()方法。