Java包装类与拆装箱机制

自动拆箱与自动装箱

      • 什么是包装类?
      • 什么是自动拆箱与自动装箱?
      • 什么时候使用包装类?

什么是包装类?

java语言是一个面向对象的语言,但是java中的基本数据类型却不是面向对象的,但是我们在实际使用中经常将基本数据类型转换成对象,便于操作,比如,集合的操作中,这时,我们就需要将基本类型数据转化成对象。
为了解决这个问题,Java为这8种基本数据类型分别定义了相应的引用类型,并称之为基本数据类型的包装类(Wrapper Class)。包装类均位于java.lang包下,其和基本数据类型的对应关系如下表所示:

基本类型 包装类
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean

什么是自动拆箱与自动装箱?

包装类创建对象的方式就跟其他类一样。

Integer num = new Integer(0);    //创建一个数值为0的Integer对象

在JDK1.5之后,基本数据类型和包装类之间可以自动地相互转换:

Integer  num1 = 1;		//自动装箱
int num2 = num1;		//自动拆箱

在执行自动装箱代码的时候,系统为我们执行了:
Integer num1 = Integer.valueOf(1);自动创建了一个interger对象
执行自动拆箱时候,系统为我们执行了:
int num2 = num1 .intValue();直接返回value值

什么时候使用包装类?

如果仅仅有基本数据类型,那么在实际使用时将存在很多的不便,很多地方都需要使用对象而不是基本数据类型。比如,在集合类中,我们是无法将int 、double等类型放进去的,因为集合的容器要求元素是Object类型。而包装类型的存在使得向集合中传入数值成为可能,包装类的存在弥补了基本数据类型的不足。
例如希望向集合Arraylist当中存储基本类型数据,就必须使用基本类型对应的“包装类”,否则程序将会报错:

Arraylist list=new ArrayList<>()

你可能感兴趣的:(Java包装类与拆装箱机制)