【Java面经整理】Java基础:什么是自动拆装箱?

拆箱与装箱

ps:Java面试题整理专栏,专门收集整理搬运面试题和答案

那么,有了基本数据类型和包装类,肯定有些时候要在他们之间进行转换。比如把一个基本数据类型的int转换成一个包装类型的Integer对象。我们认为包装类是对基本类型的包装,所以,把基本数据类型转换成包装类的过程就是打包装,英文对应于boxing,中文翻译为装箱。
反之,把包装类转换成基本数据类型的过程就是拆包装,英文对应于unboxing,中文翻译为拆箱。
在Java SE5之前,要进行装箱,可以通过以下代码:

Integer i = new Integer(10);

自动拆箱与自动装箱

在Java SE5中,为了减少开发人员的工作,Java提供了自动拆箱与自动装箱功能。

自动装箱: 就是将基本数据类型自动转换成对应的包装类。
自动拆箱:就是将包装类自动转换成对应的基本数据类型。

我们有以下自动拆装箱的代码:

public static  void main(String[]args){
     

    Integer integer=1; //装箱

    int i=integer; //拆箱
}

对以上代码进行反编译后可以得到以下代码:


public static  void main(String[]args){
     

    Integer integer=Integer.valueOf(1);  //装箱

    int i=integer.intValue();  //拆箱

}

从上面反编译后的代码可以看出,int的自动装箱都是通过Integer.valueOf()方法来实现的,Integer的自动拆箱都是通过integer.intValue来实现的。如果读者感兴趣,可以试着将八种类型都反编译一遍 ,你会发现以下规律:
自动装箱都是通过包装类的valueOf()方法来实现的.自动拆箱都是通过包装类对象的xxxValue()来实现的。

你可能感兴趣的:(Java面试题整理,Java)