Java核心(四):Java中的装箱和拆箱 深入剖析Java中的装箱和拆箱

一、为什么需要装箱和拆箱?

  基础数据类型是数据,不是对象,也不是Object的子类。Java为每种基本数据类型都提供了对应的包装器类型。装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

  把一个基本类型包装成对应的包装器类对象,有以下三点好处:

  1. 一是包装器类对象具有很多可以调用的方法;
  2. 二是Java向面像对象语言的靠近。其实Java还不算是很纯的面向对象的语言。真正的面向对象,是没有基本数据类型的。它只有一种类型,就是对象;
  3. 三是在泛型中,基本类型是不可以做泛型参数的。如:List <int> list = new ArrayList<int> ();这是不合法的。你只能这个样写List<Integer> list = new ArrayList<Integer> ();也就是要用int型的包装类类型来解决基本类型不可以做泛型参数的问题 。

  八种基本数据类型,对应的包装器类型如下图:

  

    

二、什么是自动装箱、自动拆箱?

  基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 

1、自动装箱

   当我们创建一个Integer对象时,可以这样:

Integer obj = 100; //实际上,系统执行了Integer obj = Integer.valueOf(100);

  实际上,执行上面那句代码的时候,系统为我们执行了:Integer obj = Integer.valueOf(100); 这就是基本数据类型的自动装箱功能。

2、自动拆箱

  自动拆箱(unboxing),也就是将对象中的基本数据从包装器对象中自动取出。如下可实现自动拆箱:

Integer obj = 10;   //装箱,实际上执行了 Integer obj = Integer.valueOf(10);
int num = obj;       //拆箱,实际上执行了 int num = obj.intValue();    

三、推荐阅读

  装箱和拆箱实现的原理?面试中装箱和拆箱的问题?推荐阅读以下博客:

一、为什么需要装箱和拆箱?

  基础数据类型是数据,不是对象,也不是Object的子类。Java为每种基本数据类型都提供了对应的包装器类型。装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

  把一个基本类型包装成对应的包装器类对象,有以下三点好处:

  1. 一是包装器类对象具有很多可以调用的方法;
  2. 二是Java向面像对象语言的靠近。其实Java还不算是很纯的面向对象的语言。真正的面向对象,是没有基本数据类型的。它只有一种类型,就是对象;
  3. 三是在泛型中,基本类型是不可以做泛型参数的。如:List <int> list = new ArrayList<int> ();这是不合法的。你只能这个样写List<Integer> list = new ArrayList<Integer> ();也就是要用int型的包装类类型来解决基本类型不可以做泛型参数的问题 。

  八种基本数据类型,对应的包装器类型如下图:

  

    

二、什么是自动装箱、自动拆箱?

  基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 

1、自动装箱

   当我们创建一个Integer对象时,可以这样:

Integer obj = 100; //实际上,系统执行了Integer obj = Integer.valueOf(100);

  实际上,执行上面那句代码的时候,系统为我们执行了:Integer obj = Integer.valueOf(100); 这就是基本数据类型的自动装箱功能。

2、自动拆箱

  自动拆箱(unboxing),也就是将对象中的基本数据从包装器对象中自动取出。如下可实现自动拆箱:

Integer obj = 10;   //装箱,实际上执行了 Integer obj = Integer.valueOf(10);
int num = obj;       //拆箱,实际上执行了 int num = obj.intValue();    

三、推荐阅读

  装箱和拆箱实现的原理?面试中装箱和拆箱的问题?推荐阅读以下博客:

猜你喜欢

转载自www.cnblogs.com/newbie27/p/10416085.html